我正在尝试返回用户在Google Maps Android应用程序中选择的位置,但我似乎无法找到有关如何完成此任务的信息。
我创建了一个Intent来打开GMaps活动,但是用户无法在地图上选择一个点,也不会在关闭时向Activity返回一个点。
我正在使用startActiviyForResult
,因为我期待从活动中返回一个结果。
答案 0 :(得分:44)
您只需使用PlacePicker而不是实现自己的MapActivity。您需要在项目中添加Google Play服务库参考。
使用PlacePicker.IntentBuilder
提供的意图启动StartActivityForResultint PLACE_PICKER_REQUEST = 1;
PlacePicker.IntentBuilder builder = new PlacePicker.IntentBuilder();
Context context = getApplicationContext();
startActivityForResult(builder.build(context), PLACE_PICKER_REQUEST);
然后在onActivityResult
中收到结果protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == PLACE_PICKER_REQUEST) {
if (resultCode == RESULT_OK) {
Place place = PlacePicker.getPlace(data, this);
String toastMsg = String.format("Place: %s", place.getName());
Toast.makeText(this, toastMsg, Toast.LENGTH_LONG).show();
}
}
}
有关详细信息,请参阅https://developers.google.com/places/android/placepicker。
回答你的问题有点太晚,但希望这可以帮助有相同要求的人。
答案 1 :(得分:16)
使用Google API。您只需要使用MapView创建自己的MapActivity。 Here is great tutorial on Google API包括手指点击的接收位置。希望这会有所帮助。
答案 2 :(得分:7)
对于maps API V2,您可以使用onMapClickListener。
map.setOnMapClickListener(new GoogleMap.OnMapClickListener() {
@Override
public void onMapClick(LatLng point) {
Toast.makeText(getApplicationContext(), point.toString(), Toast.LENGTH_SHORT).show();
}
});
详细信息:https://developers.google.com/maps/documentation/android/interactivity
答案 3 :(得分:5)
没有这种可能性 - 您只能打开指定位置http://developer.android.com/guide/appendix/g-app-intents.html的地图。
相反,您应该使用Maps External Library使用MapView创建自己的Activity。
答案 4 :(得分:2)
我猜你正在寻找标记拖动。
mMap.setMyLocationEnabled(true);
mLocation = mMap.getMyLocation();
mMap.addMarker(new MarkerOptions().position(new LatLng(mLocation.getLatitude(), mLocation.getLongitude())).draggable(true));
mMap.setOnMarkerDragListener(new OnMarkerDragListener() {
@Override
public void onMarkerDrag(Marker marker) {
}
@Override
public void onMarkerDragEnd(Marker marker) {
LatLng newLocation = marker.getPosition();
mLocation.setLatitude(newLocation.latitude);
mLocation.setLongitude(newLocation.longitude);
mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(mLocation.getLatitude(), mLocation.getLongitude()), 15.0f));
}
@Override
public void onMarkerDragStart(Marker marker) {}
});
然后返回你的新location.i.e mLocation。
答案 5 :(得分:1)
答案 6 :(得分:1)
您可以使用Mapbox Android SDK轻松完成此操作。他们有一个很好的教程:
所需的主要组件是: