【发布时间】:2011-06-06 12:06:26
【问题描述】:
是否可以在触摸事件时从谷歌地图获取纬度和经度?
例如:如果我在地图上触摸纽约,它应该给我纽约的纬度和经度。
【问题讨论】:
标签: android google-maps google-maps-api-3 latitude-longitude
是否可以在触摸事件时从谷歌地图获取纬度和经度?
例如:如果我在地图上触摸纽约,它应该给我纽约的纬度和经度。
【问题讨论】:
标签: android google-maps google-maps-api-3 latitude-longitude
您可以从大多数触摸事件中获取位置,例如
public boolean onTouchEvent(MotionEvent event)
{
int X = (int)event.getX();
int Y = (int)event.getY();
GeoPoint geoPoint = mapView.getProjection().fromPixels(X, Y);
}
【讨论】:
您可以直接在 GoogleMap 对象上设置OnMapClickListener,而不是使用叠加层拦截 TouchEvent。
googleMap.setOnMapClickListener(new OnMapClickListener(){
void onMapClick(LatLng point){
Toast.makeText(getContext(),
point.latitude + ", " + point.longitude,
Toast.LENGTH_SHORT).show();
}
});
如何从 MapFragment 或 MapView 获取 GoogleMap 对象,请参阅
https://developers.google.com/maps/documentation/android/map#add_map_code
【讨论】:
试试这个
public class Google_maps extends MapActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_google_maps);
MapView mapview=(MapView)findViewById(R.id.mapView);
mapview.setBuiltInZoomControls(true);
MapOverlay mapOverlay = new MapOverlay();
List<Overlay> listOfOverlays = mapview.getOverlays();
listOfOverlays.clear();
listOfOverlays.add(mapOverlay);
mapview.invalidate();
}
class MapOverlay extends Overlay
{
@Override
public boolean onTouchEvent(MotionEvent event, MapView mapView)
{
//---when user lifts his finger---
if (event.getAction() == 1) {
GeoPoint p = mapView.getProjection().fromPixels(
(int) event.getX(),
(int) event.getY());
Toast.makeText(getBaseContext(),
p.getLatitudeE6() / 1E6 + "," +
p.getLongitudeE6() /1E6 ,
Toast.LENGTH_SHORT).show();
}
return false;
}
}
@Override
protected boolean isRouteDisplayed() {
return false;
}}
【讨论】: