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);
}

}

これは、住所の文字列を緯度と経度に変換し、オーバーレイを作成して追加する私のコードです。

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 が null である可能性があります。そのため、予想されるすべての eception を処理する必要があります。

null ポインター例外が発生する理由は、何かを検索していて、ジオコーダーが検索に対してゼロ値を返しているか、検索中の接続の問題である可能性があります。

オーバーレイを追加する方法については、地図にオーバーレイを追加する方法に関する小さくて簡単な解決策があるこのLINKを参照してください。

于 2012-04-19T01:49:57.317 に答える