【问题标题】:Get coordinates on tapping map in android在android中点击地图获取坐标
【发布时间】:2011-05-09 19:17:43
【问题描述】:

我正在尝试做这样的事情:我有一个地图活动,当用户点击地图时,它会显示该位置的坐标。我已经覆盖了 onclick 方法,但它甚至没有被调用。有什么想法吗?

public class MapPoint extends MapActivity implements OnClickListener {

@Override
public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.mappoints);

    MapView map = (MapView)findViewById(R.id.mapview);
    map.setOnClickListener(this);
    map.setBuiltInZoomControls(true);
    map.getController().setZoom(18);
    map.getController().setCenter(new GeoPoint(39735007, -8827330));


}

@Override
protected boolean isRouteDisplayed() {
    // TODO Auto-generated method stub
    return false;
}

public void onClick(View arg0) {
        Toast.makeText(this, "text", Toast.LENGTH_SHORT);
}

}

【问题讨论】:

标签: android map touch coordinates tap


【解决方案1】:

使用 Android Maps v2 的现代答案是使用 OnMapClickListener,它为您提供在地图上点击的 LatLng。

https://developer.android.com/reference/com/google/android/gms/maps/GoogleMap.OnMapClickListener.html

【讨论】:

    【解决方案2】:

    试试这个:

    private class OverlayMapa extends Overlay {
    
     @Override
     public void draw(Canvas canvas, MapView mapView, boolean shadow) 
     {
       ...
     }
    
     @Override
     public boolean onTap(GeoPoint point, MapView mapView) 
     {
       Context contexto = mapView.getContext();
       String msg = "Lat: " + point.getLatitudeE6()/1E6 + " - " + 
                    "Lon: " + point.getLongitudeE6()/1E6;
    
       Toast toast = Toast.makeText(contexto, msg, Toast.LENGTH_SHORT);
       toast.show();
    
      return true;
     }
    }
    

    【讨论】:

      【解决方案3】:

      我在这个问题中加入了一些我的实现细节: How do I respond to a tap on an Android MapView, but ignore pinch-zoom?

      我发现使用 onTap() 的问题是当你捏缩放时它也会被触发,这不是我的应用所需要的。所以如果你需要捏缩放,我的代码应该能满足你的需要。

      【讨论】:

        【解决方案4】:

        就像@CommonsWare 说的,你需要使用onTouch() 函数而不是onClick()。这是一个示例,这正是您所需要的:http://mobiforge.com/developing/story/using-google-maps-android

        【讨论】:

          【解决方案5】:

          试试下面的。

          编写一个派生自Overlay 类的类并覆盖onTap() 方法。然后您可以将您的叠加层添加到您的MapViewGeoPoint 对象,表示您点击的位置,当您在地图上的某个位置点击时,将传递给 onTap() 方法。

          【讨论】:

            【解决方案6】:

            onClick() 此处未使用。您将需要覆盖onTouchEvent()Here is a sample project 显示使用 onTouchEvent() 拖放 ItemizedOverlay 地图图钉。

            给定触摸的屏幕坐标,您可以使用Projection(来自MapView 上的getProjection())将其转换为纬度和经度。

            【讨论】:

              猜你喜欢
              • 2011-06-21
              • 1970-01-01
              • 2015-03-09
              • 2013-05-15
              • 2019-08-03
              • 1970-01-01
              • 2011-09-28
              • 2010-09-06
              • 1970-01-01
              相关资源
              最近更新 更多