ユーザーが入力する場所を知る必要があるアクティビティを使用しています。理想的には、ユーザーはアクティビティのボタンを押すと、ユーザーはマップアクティビティに移動し、ピンを配置してからに戻ります。ピンの位置での私の活動。
Androidでこれを行う簡単な方法はありますか、それとも独自のMapViewを作成する必要がありますか?
ユーザーが入力する場所を知る必要があるアクティビティを使用しています。理想的には、ユーザーはアクティビティのボタンを押すと、ユーザーはマップアクティビティに移動し、ピンを配置してからに戻ります。ピンの位置での私の活動。
Androidでこれを行う簡単な方法はありますか、それとも独自のMapViewを作成する必要がありますか?
独自の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マップチュートリアルを参照してください。これにより、マップをクリックした場所にマーカーが作成され、結果(緯度、経度)が呼び出し元の元のアクティビティに戻ります。
私はあなたの「自分の」マップビューを作るのがさらに難しいでしょう。ItemizedOverlayクラスを使用するつもりだと思います。このクラスのonTap()メソッドをオーバーライドすることで、ピンをmapviewに配置できます。