Google Maps API marker.getPosition()未获取标记的当前位置

时间:2016-01-25 12:14:27

标签: java android google-maps android-studio google-maps-markers

我正在尝试获取Google地图上标记的当前位置,但它只返回原来设置的位置,而不是将其拖动到我想要的位置。

private Marker _marker;
private LatLng latLng = new LatLng(0, 0);

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    // save button
    Button save = (Button)findViewById(R.id.saveBtn);

    // if save button is pressed
    save.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            // get marker position (lat, long)
            double lLat = _marker.getPosition().latitude;
            double lLong = _marker.getPosition().longitude;

            Toast.makeText(
                    AddLocation.this,
                    "Lat: " + lLat + ", " + "Long: " + lLong,
                    Toast.LENGTH_LONG).show();
        }
    });
}

@Override
public void onMapReady(GoogleMap googleMap) {
    _mMap = googleMap;

    _marker = _mMap.addMarker(new MarkerOptions().position(new LatLng(latLng .getLatitude(), latLng .getLongitude())).draggable(true));
}

2 个答案:

答案 0 :(得分:0)

你应该看看谷歌参考https://developers.google.com/maps/documentation/android-api/marker#marker_drag_events 并设置setOnMarkerDragListener

答案 1 :(得分:0)

我在我的项目标记中使用这种方式

mMap.setOnMapClickListener(new GoogleMap.OnMapClickListener() {
        @Override
        public void onMapClick(LatLng latLng) {

            MarkerOptions marker = new MarkerOptions().position(
                    new LatLng(latLng.latitude, latLng.longitude)).title("New Marker");
            marker.draggable(true);

            markerNum = mMap.addMarker(marker);
            markerList.add(markerNum);

            mMap.addMarker(marker);

            latitudeIntent = latLng.latitude;
            longitudeIntent = latLng.longitude;


            callIntent(latitudeIntent, longitudeIntent);

            Log.d("markerPoint", String.valueOf(latitudeIntent));
            Log.d("markerPoingLng", String.valueOf(longitudeIntent));

            markerPoint = new LatLng(latitudeIntent, longitudeIntent);

            mMyMarkersArray.add(markerPoint);


        }
    });