implements GeocodeSearch.OnGeocodeSearchListener
1.通过地址获取经纬度
//地理编码(地址转坐标) private void addressChangeLat(){ String arrived = end_et.getText().toString(); geocoderSearch = new GeocodeSearch(this); geocoderSearch.setOnGeocodeSearchListener(this); // name表示地址,第二个参数表示查询城市,中文或者中文全拼,citycode、adcode GeocodeQuery query = new GeocodeQuery(arrived, "成都"); geocoderSearch.getFromLocationNameAsyn(query); }
//获得结果
@Override public void onGeocodeSearched(GeocodeResult geocodeResult, int i) { if(i==1000){ double latitude=geocodeResult.getGeocodeAddressList().get(0).getLatLonPoint().getLatitude(); double longitude=geocodeResult.getGeocodeAddressList().get(0).getLatLonPoint().getLongitude(); la=new LatLng(latitude,longitude); aMap.moveCamera(CameraUpdateFactory.newLatLng(la)); } }
2.通过经纬度获取地址
//通过经纬度获取地址 public void locationName(View view) { geocoderSearch = new GeocodeSearch(this); geocoderSearch.setOnGeocodeSearchListener(this); double latitude=30.520833; double longitude=104.038253; LatLonPoint llp=new LatLonPoint(latitude,longitude); // 第一个参数表示一个Latlng,第二参数表示范围多少米,第三个参数表示是火系坐标系还是GPS原生坐标系 RegeocodeQuery query = new RegeocodeQuery(llp, 200,GeocodeSearch.AMAP); geocoderSearch.getFromLocationAsyn(query); }
//获取结果
@Override public void onRegeocodeSearched(RegeocodeResult regeocodeResult, int i) { if(i==1000){ String formatAddress = regeocodeResult.getRegeocodeAddress().getFormatAddress(); name_tv.setText(formatAddress); } }