如何在Google Map Android上按名称搜索地址

时间:2013-06-18 04:25:55

标签: android search google-maps-android-api-2

我是Android Developer的初学者。我正在开发地图应用程序。我有搜索地址的功能,但我不知道如何使用Google Map API V.2按名称搜索地址。请建议我解决方案和一些代码来解决这个问题。非常感谢,对不起我的英语。

2 个答案:

答案 0 :(得分:24)

adderess = c.getString(c.getColumnIndex(SQLiteAdapter.KEY_CONTENT3));
// get address in string for used location for the map

/* get latitude and longitude from the adderress */

Geocoder geoCoder = new Geocoder(this, Locale.getDefault());
try
{
    List<Address> addresses = geoCoder.getFromLocationName(adderess, 5);
    if (addresses.size() > 0)
    {
        Double lat = (double) (addresses.get(0).getLatitude());
        Double lon = (double) (addresses.get(0).getLongitude());

        Log.d("lat-long", "" + lat + "......." + lon);
        final LatLng user = new LatLng(lat, lon);
        /*used marker for show the location */
        Marker hamburg = map.addMarker(new MarkerOptions()
            .position(user)
            .title(adderess)
            .icon(BitmapDescriptorFactory
            .fromResource(R.drawable.marker)));
        // Move the camera instantly to hamburg with a zoom of 15.
        map.moveCamera(CameraUpdateFactory.newLatLngZoom(user, 15));

        // Zoom in, animating the camera.
        map.animateCamera(CameraUpdateFactory.zoomTo(10), 2000, null);
    }
}
catch (IOException e)
{
    e.printStackTrace();
}

答案 1 :(得分:5)

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_search_map);

        editText = (EditText) findViewById(R.id.editText1);
        mapView = (MapView) findViewById(R.id.mapView);
        btngo = (Button) findViewById(R.id.btnmapsites);

        btngo.setOnClickListener(new View.OnClickListener() {                             

        public void onClick(View arg0) {

             List<Address> addresses;
             try{
                  addresses = geoCoder.getFromLocationName(editText.getText().toString(),1);
                  if(addresses.size() > 0){
                     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 = mapView.getOverlays(); 
                     listOfOverlays.clear();
                     listOfOverlays.add(mapOverlay);

                     mapView.invalidate();
                     editText.setText("");
                  }else{
                     AlertDialog.Builder adb = new AlertDialog.Builder(SearchMapActivity.this);
                     adb.setTitle("Google Map");
                     adb.setMessage("Please Provide the Proper Place");
                     adb.setPositiveButton("Close",null);
                     adb.show();
                  }
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
            }
            });


    }