画面の中心にマーカーを配置し、マーカーではなくマップを移動して、マーカーが示すポイントの緯度経度を取得するアプリケーションを作成する必要があります。Drag Marker のようなものをインターネットで検索しましたが、これが必要かどうかわかりません。解決策はありますか?
質問する
198 次
1 に答える
0
あなたのmapActivityでこれを書いてください。
Location l = new Location();
// Location class will be used to calculate distance moved by map
TimerTask tm;
GeoPoint oldCenterOfMap, newCenteOfMap;
// アクティビティの再開メソッドで oldCenterOfMap = mapView.getMapCenter(); を実行します。
Handler mHandler = new Handler();
int isTouched = 0;
MapView mapview = (MapView) findViewById(R.id.yourmapview_from_xml);
mapView.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_UP) {
newCenteOfMap = mapView.getMapCenter();
if (mapchanged(oldCenterOfMap, newCenteOfMap)) {
isTouched++;
// Here is what would you do when you lift your finger fromt he map*****
newCenteOfMap =mapView.getMapCenter());
if (isTouched >= 1) {
if (isTouched > 1) {
mHandler.removeCallbacks(tm_circle);
isTouched = 1;
}
mHandler.postDelayed(tm_circle, 1200);
}
}
if (!mapchanged(oldCenterOfMap, newCenteOfMap))
mHandler.removeCallbacks(tm_circle);
}
return false;
}
});
tm_circle = new TimerTask() {
@Override
public void run() {
isTouched = 0;
// here is what you do after you touched a map moved after 1.2 seconds
oldCenterOfMap = mapView.getMapCenter();
}
};
public boolean mapchanged(GeoPoint oldCenter, GeoPoint newCenter) {
String distance = l.CalclauteDistance(oldCenter.getLongitudeE6() / 1E6,
oldCenter.getLatitudeE6() / 1E6,
newCenter.getLongitudeE6() / 1E6,
newCenter.getLatitudeE6() / 1E6);
if (Double.valueOf(distance) == 0.0)
return false;
else
return true;
}
以前のコードでは、マップの移動を追跡していました。次のコードは、マップ移動の場合に応答します。上記のコードにあるコメント ( // ここでは、1.2 秒後に移動した地図に触れた後に行うことと // 地図から指を離したときに行うことを示します*****) に従ってください。別の投稿での私の答えの説明。ここで mapview に複数のオーバーレイを動的に追加する
編集
public String CalclauteDistance(double long1, double lat1, double long2,
double lat2) {
String Result;
Point p1 = new Point(long1, lat1);
Point p2 = new Point(long2, lat2);
Result = p1.distanceTo(p2) + "";
return Result;
}
これは、ロケーション クラスの関数 (CalclauteDistance) です。
于 2013-02-12T07:47:12.057 に答える