如何解决为什么我不能在 Android Studio 的 Google 地图中放置标记?
我目前正在使用 Android Studio 开发应用。 但出于某种原因,如果我点击或双击该位置,这不会让我添加标记。 如果我点击或双击它,它只会放大。 你知道为什么吗?我做错了什么?
我的代码是:
public class SetYourLocation extends AppCompatActivity implements OnMapReadyCallback {
private TextView textView;
private String park_name,phone,capacity,address,password;
private GoogleMap mMap;
private String location;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_set_your_location);
SupportMapFragment mapFragment = (SupportMapFragment)
getSupportFragmentManager()
.findFragmentById( R.id.map_loc );
mapFragment.getMapAsync( this );
Bundle b = getIntent().getExtras();
park_name = b.getString("park_name");
phone = b.getString("phone");
capacity = b.getString("capacity");
address = b.getString("address");
password = b.getString("password");
//textView.setText(park_name+" "+phone+" "+capacity+" "+map_locatin+" "+password);
}
@Override
public void onMapReady(GoogleMap googleMap) {
mMap = googleMap;
try {
boolean success = googleMap.setMapStyle( MapStyleOptions.loadRawResourceStyle( getApplicationContext(),R.raw.mapstyler_stander ) );
if (!success) {
Log.e( "Set Your Location","Style map failed" );
}
} catch (Resources.NotFoundException e) {
Log.e( "Set Your Location","Can't find MAP_Style" + e );
}
LatLng cdo = new LatLng(8.481276,124.64666 );
mMap.moveCamera( CameraUpdateFactory.newLatLngZoom( cdo,11 ) );
mMap.getUiSettings().setZoomControlsEnabled( true );
final Marker marker = mMap.addMarker( new MarkerOptions().position( cdo ) );
marker.remove();
if (ActivityCompat.checkSelfPermission( this,android.Manifest.permission.ACCESS_FINE_LOCATION ) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission( this,android.Manifest.permission.ACCESS_COARSE_LOCATION ) != PackageManager.PERMISSION_GRANTED) {
return;
}
mMap.setMyLocationEnabled( true );
mMap.setOnMapClickListener( new GoogleMap.OnMapClickListener() {
@Override
public void onMapClick(LatLng point) {
final double lat = point.latitude ;
final double lng = point.longitude ;
double zoomV = mMap.getCameraPosition().zoom ;
location = getCompleteAddressString( point.latitude,point.longitude );
try{
drawMarker(point,location);
}catch (Exception e){
e.printStackTrace();
}
////////////////////////////////////////////////////////////////////////////////////
mMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() {
@Override
public boolean onMarkerClick(Marker marker) {
new AlertDialog.Builder(SetYourLocation.this)
.setTitle("My Location")
.setMessage(location )
.setPositiveButton("Allow",new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,int which) {
//////////////////////////
Toast.makeText(getApplicationContext()," Lat:"+lat+" Lng:"+lng+" Add:"+location,Toast.LENGTH_LONG).show();
User user = SharedPrefManager.getInstance(getApplication()).getUser();
Call<DefaultResponse> call = RetrofitClient.getInstance().getApi().rentYourSpaceReg(park_name,user.getFullName(),password,lat,lng,location);
call.enqueue(new Callback<DefaultResponse>() {
@Override
public void onResponse(Call<DefaultResponse> call,Response<DefaultResponse> response) {
DefaultResponse defaultResponse = response.body();
Toast.makeText(getApplicationContext(),defaultResponse.getMsg(),Toast.LENGTH_LONG).show();
Intent intent = new Intent(SetYourLocation.this,HomepageActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(intent);
}
@Override
public void onFailure(Call<DefaultResponse> call,Throwable t) {
Toast.makeText(getApplicationContext(),t.getMessage(),Toast.LENGTH_LONG).show();
}
});
/////////////////////////
}
})
.setNegativeButton("Deny",int which) {
dialog.cancel();
}
})
.show();
return false;
}
});
////////////////////////////////////////////////////////////////////////////////////
}
} );
}
public void drawMarker(LatLng point,String add){
MarkerOptions markerOptions = new MarkerOptions();
mMap.addMarker(markerOptions.position(point).title( add ).snippet(add).draggable( true ));
mMap.addMarker(markerOptions.icon( BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_MAGENTA) ) );
Toast.makeText( getApplicationContext()," "+point+" "+add,Toast.LENGTH_SHORT ).show();
}
private String getCompleteAddressString(double LATITUDE,double LONGITUDE) {
String fullAdd = null;
try {
Geocoder geocoder = new Geocoder( getBaseContext(),Locale.getDefault() );
List<Address> addresses = geocoder.getFromLocation( LATITUDE,LONGITUDE,1 );
if (addresses.size() > 0) {
Address address = addresses.get( 0 );
fullAdd = address.getAddressLine( 0 );
}
} catch (IOException e) {
e.printStackTrace();
}
return fullAdd;
}
}
我使用的是 Android Studio 模拟器。我认为“myPhone myX11 Plus”只接受 API 28。当我使用模拟器时,我的笔记本电脑很慢。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。