0

因此,当我删除 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;
    }
4

1 回答 1

0
mControl.animateTo(newp);

在上面的行中 newp 可能为空。所以你必须处理所有预期的eceptions。

获得空指针异常的原因可能是您正在搜索某些内容,而地理编码器正在为您的搜索返回零值,或者在搜索时可能是任何连接问题。

关于如何添加叠加层,请参阅此链接,它有一个关于如何将叠加层添加到地图的小而简单的解决方案。

于 2012-04-19T01:49:57.317 回答