我正在处理一个需要知道用户输入位置的活动。理想情况下,用户会在我的活动中按一个按钮,然后将用户发送到他们可以放置别针的地图活动中,然后使用引脚位置返回我的活动。
在Android中有一种简单的方法可以做到这一点,还是我必须制作自己的MapView?
答案 0 :(得分: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类,请参阅此Google Maps Tutorial以获取确切的实现。这将在您在地图上单击的任何位置创建标记,并将结果(纬度,经度)返回到您调用它的原始活动。
答案 1 :(得分:0)
我将更难以制作“自己的”mapview。 我认为你的意思是使用ItemizedOverlay课程。您可以通过覆盖此类的onTap()方法将引脚放入mapview。