1

我正在处理一个需要知道用户输入位置的活动。理想情况下,用户将在我的活动中按下一个按钮,然后将用户发送到地图活动中,他们可以在其中放置图钉,然后返回我与别针位置的活动。

在 Android 中是否有一种简单的方法可以做到这一点,还是我必须制作自己的 MapView?

4

2 回答 2

2

您必须制作自己的 MapView,然后使用 onTouchListener() 来检测地图上的点击,并根据点击位置,您将能够使用以下代码获取地理点:

class HelloGoogleMaps extends MapActivity
{
@Override
public void onCreate(Bundle savedInstanceState)
{
 List<Overlays> mapOverlays = map.getOverlays();
 //This is going to be your pointer (you can use whatever image you want as your indicator
 final Drawable drawable = this.getResources().getDrawable(R.drawable.indicator);
 map.setOnTouchListener(new View.OnTouchListener() {

 @Override
public boolean onTouch(View v, MotionEvent event) {
    if(event.getAction() == MotionEvent.ACTION_UP)
    {
    HelloItemizedOverlay itemizedoverlay = new HelloItemizedOverlay(drawable, HelloGoogleMaps.this);
    GeoPoint p = mapView.getProjection().fromPixels(
        (int) event.getX(), (int) event.getY());
    String lat = Double.toString(p.getLatitudeE6() / (Math.pow(10,6)));
    String lon = Double.toString(p.getLongitudeE6() / (Math.pow(10,6)));
    OverlayItem overlayitem = new OverlayItem(p, "Title text", "Body Text");
    itemizedoverlay.addOverlay(overlayitem);
    mapOverlays.add(itemizedoverlay);
    map.postInvalidate();
    Intent i = new Intent();
    i.putExtra("latitude", Double.parseDouble(lat));
    i.putExtra("longitude", Double.parseDouble(lon));
    this.setResult(RESULT_OK, i);
    finish();
    return true;
    }
}
});
}

关于上面提到的 HelloItemizedOverlay 类,具体实现请参考这个谷歌地图教程。这将在您在地图上单击的任何位置创建标记,并将结果(纬度、经度)返回到您调用它的原始活动。

于 2012-08-18T19:14:53.550 回答
0

我将更加难以制作您的“自己的”地图视图。我认为您的意思是使用ItemizedOverlay类。您可以通过覆盖此类的 onTap() 方法将引脚放置到 mapview。

于 2012-08-18T19:04:50.197 回答