因此,当我删除 getNameFrom 并对 Geopoint 进行硬编码时,我的地图会显示一个针点,但是,当我使用此函数时,它不会返回任何内容,因此我的地图不会显示任何内容。
这是我的 ItemizedOverlay 类:
public class ItemizedOverlay extends com.google.android.maps.ItemizedOverlay {
private ArrayList<OverlayItem> mOverlays = new ArrayList<OverlayItem>();
public ItemizedOverlay(Drawable defaultMarker) {
super(boundCenterBottom(defaultMarker));
// TODO Auto-generated constructor stub
}
@Override
public int size() {
return mOverlays.size();
}
public void addOverlay(OverlayItem overlay) {
mOverlays.add(overlay);
populate();
}
@Override
protected OverlayItem createItem(int i) {
return mOverlays.get(i);
}
}
这是我的代码,它将地址字符串转换为 lat 和 lng,然后进行叠加并添加它。
private void convert_Points() throws IOException {
// initialization
mapOverlays = mapV.getOverlays();
drawable = this.getResources().getDrawable(R.drawable.pin);
itemizedoverlay = new ItemizedOverlay(drawable);
// make OverlayItem by creating a GeoPoint that defines our map coordinates
Geocoder geocoder = new Geocoder(this, Locale.getDefault());
List<Address> geoResults = geocoder.getFromLocationName("empire state building", 1);
while (geoResults.size()==0) {
geoResults = geocoder.getFromLocationName("empire state building", 1);
}
if (geoResults.size()>0) {
GeoPoint point= new GeoPoint( (int) (geoResults.get(0).getLatitude() * 1E6), (int) (geoResults.get(0).getLongitude() * 1E6));
// GeoPoint point = new GeoPoint(19240000,-99120000);
OverlayItem overlayitem = new OverlayItem(point, "", "");
// add this OverlayItem to acollection in the ItemizedOverlay
itemizedoverlay.addOverlay(overlayitem);
mapOverlays.add(itemizedoverlay);
}
}
// 这是我的活动类中的 mapoverlay 类
class MapOverlay extends com.google.android.maps.Overlay
{
@Override
public boolean draw(Canvas canvas, MapView mapView,
boolean shadow, long when)
{
super.draw(canvas, mapView, shadow);
Point screenPts = new Point(); // transform the Geological point to map pixel
mapView.getProjection().toPixels(p, screenPts);
Bitmap bmp = BitmapFactory.decodeResource( // add the pin
getResources(), R.drawable.pin);
canvas.drawBitmap(bmp, screenPts.x, screenPts.y-50, null);
return true;
}