我有一个用java做的Android应用,有一个谷歌地图活动,我想用一个新的标记替换 "默认的Sidney "市场,用我通过参数给出的LatLng,但我不知道怎么做。我已经试过了=>
public class MapsActivity2 extends FragmentActivity implements OnMapReadyCallback {
private GoogleMap mMap;
private double latitud;
private double longitud;
private LatLng ubicacion;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_maps2);
// Obtain the SupportMapFragment and get notified when the map is ready to be used.
SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
.findFragmentById(R.id.map);
mapFragment.getMapAsync(this);
}
@Override
public void onMapReady(GoogleMap googleMap) {
mMap = googleMap;
// Add a marker in Sydney and move the camera
LatLng sydney = ubicacion;
mMap.addMarker(new MarkerOptions().position(sydney).title("Ubicacion Gasto"));
mMap.moveCamera(CameraUpdateFactory.newLatLng(sydney));
}
public void setearUbicacion(double lat, double longi){
ubicacion = new LatLng(lat, longi);
}
}
但是 "ubicacion "变量无论如何都被设置为空。我不想改变标记的样式,我想通过参数给onMapReady方法提供LatLng,而不是像所有的例子那样直接在类上设置。
先谢谢你了
public void onMapReady(GoogleMap googleMap) {
mMap = googleMap;
setLatLng(1.0,1.0);
}
试试这个。你必须在onMapReady中调用setLatLng方法。
public void setLatLng(double latitude , double longitude){
LatLng location = new LatLng(latitude, longitude);
mMap.addMarker(new MarkerOptions().position(location).title("Marker in Your Location"));
mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(location,15));
}
市场或Marker,如果是Marker,你可以试试这个代码。
map.addMarker(new MarkerOptions()
.position(new LatLng(latitude, longitude))
.title("Title")
.snippet("Snippet")
.icon(BitmapDescriptorFactory.fromResource(R.drawable.my_icon)));
只需加 .icon(BitmapDescriptorFactory.fromResource(R.drawable.my_icon))
或改变默认标记的颜色 .icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_AZURE))