Допустим мы хотим поставить маркеры или булавки (или как они называются) на карте, зная широту и долготу.
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
Pin
Overlay(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
;
}
}
Комментариев нет:
Отправить комментарий