我正在尝试使用ImageView从GoogleMap获取位置。 我可以拖动这个Pin图像和我放下它的位置,我应该得到它的位置。
我正在使用带有googleMap的framelayout作为它的第一个子节点,而ImageView(即Pin)作为它的第二个子元素。
与Google地图应用程序中的相同。
请建议我,如何实现这一目标?
我的布局文件:
<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>
答案 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链接,了解如何自定义标记。
我希望它有所帮助。