如何实施谷歌地图按街道名称,城市搜索?

时间:2011-03-23 15:32:22

标签: google-maps

我需要像this site这样的搜索功能。但我想知道如何从街道名称获取google api的坐标?

2 个答案:

答案 0 :(得分:9)

Google地理编码API

您可以输入一个地址,它将返回Json响应或XML等中的Lat / long坐标

你可以在这里阅读:

http://code.google.com/apis/maps/documentation/geocoding/

答案 1 :(得分:0)

在搜索的onclick事件中写

List<Address> addresses = geoCoder.getFromLocationName("enter location name",5);
 p = new GeoPoint( (int) (addresses.get(0).getLatitude() * 1E6), 
                                  (int) (addresses.get(0).getLongitude() * 1E6));

                   controller.animateTo(p);
                   controller.setZoom(12);

                   MapOverlay mapOverlay = new MapOverlay();
                 List<Overlay> listOfOverlays = map.getOverlays();
                 listOfOverlays.clear();
                 listOfOverlays.add(mapOverlay);

                   map.invalidate();

然后在mapActivity中创建地图覆盖类

class MapOverlay extends Overlay
{
   private GeoPoint pointToDraw;

   public void setPointToDraw(GeoPoint point) {
          pointToDraw = point;
   }

   public GeoPoint getPointToDraw()
   {
          return pointToDraw;

   }

    @Override
    public boolean draw(Canvas canvas, MapView mapView, boolean shadow, long when) {
        super.draw(canvas, mapView, shadow);                  

        // convert point to pixels
        Point screenPts = new Point();
        mapView.getProjection().toPixels(pointToDraw, screenPts);

        // add marker
        Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.drawable.marker);
        canvas.drawBitmap(bmp, screenPts.x, screenPts.y - 24, null); // 24 is the height of image       
        return true;
    }
}