2016-09-21 63 views
1

我做了一个代码。 在此代码中,当我点击地图时,点击点上会有一个标记。如何在点击按钮setMyLocationEnabled后直接在GoogleMap上添加Marker?

这是我的代码

public class MapsActivity extends FragmentActivity implements OnMapReadyCallback { 

    private GoogleMap mMap; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_maps); 
     SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager() 
       .findFragmentById(R.id.map); 
     mapFragment.getMapAsync(this); 
    } 

    @Override 
    public void onMapReady(final GoogleMap googleMap) { 
     mMap = googleMap; 
     if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) 
       == PackageManager.PERMISSION_GRANTED) { 
      mMap.setMyLocationEnabled(true); 
     } else { 
      Toast.makeText(getApplicationContext(), "oh, no", Toast.LENGTH_LONG).show(); 
     } 
     googleMap.setOnMapClickListener(new GoogleMap.OnMapClickListener() { 
      @Override 
      public void onMapClick(LatLng point) { 
       String lat = String.valueOf(point.latitude); 
       String lng = String.valueOf(point.longitude); 
       MarkerOptions marker = new MarkerOptions().position(
         new LatLng(point.latitude, point.longitude)).title("ok"); 
       mMap.addMarker(marker); 
      } 
     }); 
    } 
} 

问: 我想要的是,当我点击SetMylocationEnable按钮,还增加了一个新的标志物。而且因为我想要标记在整个地图中只有一个,另外一个已经在地图上的标记将被删除。我该怎么做?你会教我吗?

你可以在图片中看到我说的按钮是什么。 (图片来自:Enable my location icon Googlemap v2

enter image description here

回答

1
mMap.setOnMyLocationButtonClickListener(new OnMyLocationButtonClickListener() { 
    @Override 
    public boolean onMyLocationButtonClick() { 
     Location location = getLocation(); 
     MarkerOptions marker = new MarkerOptions().position(
       new LatLng(location.getLatitude(), location.getLongitude())).title("ok"); 
     mMap.addMarker(marker); 
     return true; 
    } 
}); 

private Location getLocation() { 
    LocationManager locationManager = (LocationManager) 
      getSystemService(Context.LOCATION_SERVICE); 
    Criteria criteria = new Criteria(); 
    return locationManager.getLastKnownLocation(locationManager 
      .getBestProvider(criteria, false)); 

} 
+0

谢谢Cabezas。但是,标记在哪里? –

+0

我编辑了答案。 – Cabezas

+0

谢谢,Cabezas –

1

保持一个参考标记,如果引用为null,则创建标记为你做了,如果不是,然后编辑标记,改变其位置

+0

谢谢Cruces –