Google マップで住所を検索するチュートリアルをコーディングしました。残念ながら、ズームアウトしているときにマーカーがその場所にくっつきません。どうやらマーカーがずれているようです。
class MapOverlay extends com.google.android.maps.Overlay {
public boolean draw(Canvas canvas, MapView mapView,
boolean shadow, long when) {
super.draw(canvas, mapView, shadow);
// translate the GeoPoint to screen pixels
Point screenPts = new Point();
mapView.getProjection().toPixels(p, screenPts);
// add the red marker
Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.drawable.marker_red);
canvas.drawBitmap(bmp, screenPts.x, screenPts.y-32, null);
return true;
}
}
GeoPoint を画面のピクセルに変換した結果だと思います。検索ボタンの onClick イベントのコードは次のとおりです。
this.searchButton.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
followMe = false;
String temp = searchBar.getText().toString();
List<Address> addresses = null;
try {
addresses = geoCoder.getFromLocationName(temp,5);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if (addresses != null) {
p = new GeoPoint(
(int) (addresses.get(0).getLatitude() * 1E6),
(int) (addresses.get(0).getLongitude() * 1E6));
mapController.animateTo(p);
mapController.setZoom(19);
MapOverlay mapOverlay = new MapOverlay();
mapOverlays = mapView.getOverlays();
mapOverlays.add(mapOverlay);
mapView.postInvalidate();
//searchBar.setText("");
} else {
AlertDialog.Builder adb = new AlertDialog.Builder(
GMapsSubActivity.this);
adb.setTitle("Google Map");
adb.setMessage("Please Provide the Proper Place");
adb.setPositiveButton("Close", null);
adb.show();
}
}
});
searchbar は editText であり、followMe は関係ありません。ズームアウトしているときに、探していた場所にマーカーを貼り付けたい。
画像: http://i.imgur.com/iavqa.jpg http://i.imgur.com/dFqIs.jpg