将Pin放在上面后,如何从Google Map获取位置

时间:2015-02-13 12:00:25

标签: android google-maps location android-maps-v2

我正在尝试使用ImageView从GoogleMap获取位置。 我可以拖动这个Pin图像和我放下它的位置,我应该得到它的位置。

我正在使用带有googleMap的framelayout作为它的第一个子节点,而ImageView(即Pin)作为它的第二个子元素。

与Google地图应用程序中的相同。

enter image description here

请建议我,如何实现这一目标?

我的布局文件:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >

<fragment
    android:id="@+id/fetchaddressMap"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    class="com.google.android.gms.maps.MapFragment" />

    <ImageButton
    android:id="@+id/markerRed"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:background="@android:color/transparent"
    android:contentDescription="@string/content_description"
    android:src="@drawable/marker_red"
    android:visibility="visible" />
    </FrameLayout>

2 个答案:

答案 0 :(得分:2)

我建议您使用已经使用Google Maps Api内置的标记,只需将标记设置为可拖动,并添加一个监听器,回调将为您提供所需的所有信息。更多信息请参见documentation。您也可以使用Android Maps Utils library来定义自定义标记。

答案 1 :(得分:0)

您需要实现OnMarkerDragListener类。您还可以获得街道地址和其他信息。阅读文档。

http://developer.android.com/reference/android/location/Geocoder.html http://developer.android.com/reference/android/location/Address.html

mMap.setOnMarkerDragListener(new GoogleMap.OnMarkerDragListener() {
        @Override
        public void onMarkerDragStart(Marker marker) {

        }

        @Override
        public void onMarkerDrag(Marker marker) {

        }

        @Override
        public void onMarkerDragEnd(Marker marker) {
            marker.getPosition();
            Geocoder geocoder;
            List<Address> addresses;
            geocoder = new Geocoder(MapsActivity.this, Locale.getDefault());
            try {
                addresses = geocoder.getFromLocation(marker.getPosition().latitude, marker.getPosition().longitude, 1);
                String city = addresses.get(0).getAddressLine(1);
                Toast.makeText(MapsActivity.this, city, Toast.LENGTH_SHORT).show();
            } catch (IOException e) {
                e.printStackTrace();
            }


        }
    });

使用android的引脚可以更好,更轻松地实现。但是,如果您想使用海关销,那么您不需要在framelayout下添加该imageview。删除该imageview。请参阅this链接,了解如何自定义标记。

我希望它有所帮助。