Допустим мы хотим поставить маркеры или булавки (или как они называются) на карте, зная широту и долготу.
1. После создания проекта Android вы должны создать класс MyItemizedOverlay, наследуемый от ItemizedOverlay и переопределить некоторые методы. Код показан ниже:
1. После создания проекта Android вы должны создать класс MyItemizedOverlay, наследуемый от ItemizedOverlay и переопределить некоторые методы. Код показан ниже:
package com.example;import android.app.AlertDialog;import android.content.Context;import android.graphics.drawable.Drawable;import com.google.android.maps.ItemizedOverlay;import com.google.android.maps.OverlayItem;import java.util.ArrayList;/** * Description * * @author : awacs * @since: 28/11/12 */public class PinOverlay extends ItemizedOverlay { private ArrayList mOverlays = new ArrayList(); Context mContext; public PinOverlay(Drawable marker) { // центром каплевидного маркера считаем его нижнюю центральную часть. super(boundCenterBottom(marker)); } public MyItemizedOverlay(Drawable marker, Context context) { super(boundCenterBottom(marker)); mContext = context; } public void addOverlay(OverlayItem overlay) { mOverlays.add(overlay); populate(); } @Override protected OverlayItem createItem(int i) { return mOverlays.get(i); } @Override public int size() { return mOverlays.size(); } @Override protected boolean onTap(int i) { //Когда мы тапаем по маркеру, вызывается этот Алерт OverlayItem item = mOverlays.get(i); AlertDialog.Builder dialog = new AlertDialog.Builder(mContext); dialog.setTitle(item.getTitle()); dialog.setMessage(item.getSnippet()); dialog.show(); return true; }}
2. Находим на просторах интернета какой-нибудь маркер и копируем его в папку drawable проекта. Называем его marker.png
3. А в главной Activity, которая у нас наследуется от MapActivity пишем следующее:
package com.example;import android.graphics.drawable.Drawable;import android.os.Bundle;import com.google.android.maps.*;import java.util.List;public class MyActivity extends MapActivity { private MapView mapView; private MapController mapController; private GeoPoint geoPoint; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); mapView = (MapView) findViewById(R.id.mapview); //Устанавливаем масштаб mapView.getController().setZoom(12); //разрешаем пользоваться зумом mapView.setBuiltInZoomControls(true); // список слоев List mapOverlays = mapView.getOverlays(); // наш маркер Drawable drawable = this.getResources().getDrawable(R.drawable.marker);
// слой с маркером
PinOverlay itemizedoverlay = new PinOverlay(drawable, this); // координаты где будем ставить маркер (46.06, 23.57)
GeoPoint point = new GeoPoint(46066940, 23570000); // центрируем карту на нашей точке mapView.getController().setCenter(point); // создаем пин, назначаем его заголовок и текст для алерта OverlayItem overlayitem = new OverlayItem(point, "Title for dialog", "Alba Iulia City From Romania");
// еще один пин
GeoPoint point2 = new GeoPoint(35410000, 139460000); OverlayItem overlayitem2 = new OverlayItem(point2, "Title for dialog", "Japan");
// добавляем пин на слой
itemizedoverlay.addOverlay(overlayitem); itemizedoverlay.addOverlay(overlayitem2); // добавляем слой mapOverlays.add(itemizedoverlay); } @Override protected boolean isRouteDisplayed() { return false; }}

