2012-04-19 75 views
0

所以当我删除getNameFrom和硬编码的Geopoint时,我的地图显示了一个针点,但是,当我使用这个函数时,它不会返回任何东西因此我的地图不显示任何内容。将地址转换为纬度和经度,并在地图上显示结果,getNameFrom不提供任何形式

这里是我的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类在上述行NEWP我的活动类

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

回答

0
mControl.animateTo(newp); 

可能为空。所以你必须处理所有预期的提示。

获取空指针异常的原因可能是您正在搜索某物,并且geocoder正在为您的搜索返回零值,或者在搜索时可能是任何连接问题。

关于如何添加覆盖图,请参阅LINK,其中有一个关于如何将覆盖图添加到地图的小巧且简单的解决方案。

+0

是的,我意识到,所以我在if条件中将这些行拉回来,这会照顾到零点异常。但现在它不显示任何结果 – user1342796 2012-04-19 02:00:44

+0

我的地图不显示任何东西,我试图使用吐司,也使用Log.d打印在if语句中,它从不出现。 – user1342796 2012-04-19 02:02:33

+0

你在哪里添加点在你的代码中映射我没有看到任何代码相关的和默认情况下android没有这样做 – 2012-04-19 02:02:58

相关问题