Android 如何从谷歌地图上获取lat和long on touch事件?
有可能在触摸事件中从谷歌地图获取纬度和经度吗Android 如何从谷歌地图上获取lat和long on touch事件?,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.getProje
例如:如果我在地图上触摸纽约,它会告诉我纽约的纬度和经度。你可以从大多数触摸事件中获得位置,例如
public boolean onTouchEvent(MotionEvent event)
{
int X = (int)event.getX();
int Y = (int)event.getY();
GeoPoint geoPoint = mapView.getProjection().fromPixels(X, Y);
}
试试这个
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;
}}
公共类谷歌地图扩展了地图活动{
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u谷歌地图);
MapView MapView=(MapView)findViewById(R.id.MapView);
mapview.SetBuilTinZoomControl(真);
MapOverlay MapOverlay=新的MapOverlay();
List ListoForLays=mapview.getOverlays();
listOfOverlays.clear();
添加(映射覆盖);
mapview.invalidate();
}
类MapOverlay扩展了Overlay
{
@凌驾
公共布尔onTouchEvent(MotionEvent事件,MapView MapView)
{
//---当用户抬起手指时---
如果(event.getAction()==1){
地理点p=mapView.getProjection().fromPixels(
(int)event.getX(),
(int)event.getY();
Toast.makeText(getBaseContext(),
p、 getLatitudeE6()/1E6+“,”+
p、 getLongitudeE6()/1E6,
吐司。长度(短)。show();
}
返回false;
}
}
@凌驾
受保护的布尔值isRouteDisplayed(){
返回false;
}}
您可以直接在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对象,请参见