【问题标题】:How to get marker position when drag googleMap in android在android中拖动googleMap时如何获取标记位置
【发布时间】:2017-10-07 12:20:25
【问题描述】:

在我的应用程序中,我在地图的布局中心设置了一张图片,我希望在拖动 googleMap 时显示此图片的 latLong(标记)。

布局代码:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:map="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <include
        android:id="@+id/mainToolbar"
        layout="@layout/toolbar_main" />

    <fragment
        android:id="@+id/mainMap"
        android:name="com.google.android.gms.maps.SupportMapFragment"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_below="@+id/mainToolbar"
        tools:context="com.tida.utils.safine.Activities.MainActivity" />

    <ImageView
        android:id="@+id/location_setter"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:src="@drawable/ic_location_origin_pin" />

</RelativeLayout>

Java 代码:

public class MainActivity extends FragmentActivity implements OnMapReadyCallback {

    private GoogleMap mMap;
    private UiSettings mUiSettings;
    private CameraUpdate mapCenter, mapZoom;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
                .findFragmentById(R.id.mainMap);
        mapFragment.getMapAsync(this);
    }

    @Override
    public void onMapReady(GoogleMap googleMap) {
        mMap = googleMap;
        mUiSettings = mMap.getUiSettings();
        mUiSettings.setScrollGesturesEnabled(true);
        mUiSettings.setZoomGesturesEnabled(true);
        mUiSettings.setTiltGesturesEnabled(true);
        mUiSettings.setRotateGesturesEnabled(true);

        /*Set center of Tehran location*/
        mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(35.724414, 51.427059), 18.0f));

        /*Map listener*/
        mMap.setOnMarkerDragListener(new GoogleMap.OnMarkerDragListener() {
            @Override
            public void onMarkerDragStart(Marker marker) {
                Log.e("mapDrag", "DragStart : " + marker.getPosition());
            }

            @Override
            public void onMarkerDrag(Marker marker) {
                Log.e("mapDrag", "Drag : " + marker.getPosition());
            }

            @Override
            public void onMarkerDragEnd(Marker marker) {
                Log.e("mapDrag", "DragEnd : " + marker.getPosition());
            }
        });
    }
}

如何设置我的标记图像并获得这个位置?

【问题讨论】:

    标签: android google-maps


    【解决方案1】:

    marker.getPosition() 返回LatLng

    你应该使用:

    marker.getPosition().latitude
    

    &

    marker.getPosition().longitude
    

    【讨论】:

      【解决方案2】:

      使用marker的全局变量设置marker并调用mMarker.setPosition(marker.getPosition());

      【讨论】:

      • 我如何为标记&lt;ImageView android:id="@+id/location_setter" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" android:src="@drawable/ic_location_origin_pin" /&gt;设置这个
      • 是的,你能帮帮我吗?
      • 为什么要使用图像来设置标记?这不是正确的方法。
      • 我想在点击这张图片时,在这个位置设置标记。比如优步
      • 然后只需设置标记。无需使用图像。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-06-01
      • 1970-01-01
      • 2017-09-16
      • 2020-10-24
      • 2017-08-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多