暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Android App开发超实用实例 | 在高德地图上根据纬度和经度值查询详细地址

1447

高德地图 Android SDK 是一套地图开发调用接口,开发者可以轻松地在自己的Android应用中加入高德地图相关的功能,包括:地图显示(含室内、室外地图)、与地图交互、在地图上绘制、兴趣点搜索、地理编码、离线地图等功能。

下面这个实例演示了在Android手机高德地图上根据纬度和经度值查询详细地址。


01

实例功能


此实例主要通过使用高德地图SDK的GeocodeSearch和RegeocodeQuery,实现根据指定的纬度和经度值查询该地的详细地址。当实例运行之后,如果在“纬度经度值:”输入框中输入重庆科技馆的纬度和经度值“29.569585,106.576911”,然后单击“通过高德地图获取该地的详细地址”按钮,将设置重庆科技馆为高德地图的中心,并在标记窗口中显示该地的详细地址,如图1(a)所示。如果在“纬度经度值:”输入框中输入重庆人民解放纪念碑的纬度和经度值“29.557258,106.577045”,然后单击“通过高德地图获取该地的详细地址”按钮,将设置重庆人民解放纪念碑为高德地图的中心,并在标记窗口中显示该地的详细地址,如图1(b)所示。在“纬度经度值:”输入框中输入其他值进行测试,将取得类似的效果。


■ 图1


02

实现代码


//响应单击按钮“通过高德地图获取该地的详细地址”
 public void onClickButton1(View v) {
  myAMap.clear();
  EditText myEditLatlng=(EditText)findViewById(R.id.myEditLatlng);
  String myLatLngString=myEditLatlng.getText().toString();
  final double myLat=Double.parseDouble(myLatLngString
          .substring(0,myLatLngString.indexOf(",")));
  final double myLng=Double.parseDouble(myLatLngString
          .substring(myLatLngString.indexOf(",")+1));
  //通过LatLonPoint封装纬度经度值
  LatLonPoint myLatLonPoint=new LatLonPoint(myLat,myLng);
  GeocodeSearch myGeocodeSearch=new GeocodeSearch(this);
  //添加检索结果监听器
  myGeocodeSearch.setOnGeocodeSearchListener(
          new GeocodeSearch.OnGeocodeSearchListener(){
           @Override
           public void onRegeocodeSearched(RegeocodeResult regeocodeResult, int i){
            String myAddress=regeocodeResult.getRegeocodeAddress()
                    .getFormatAddress();
            MarkerOptions myMarkerOptions = new MarkerOptions();
            myMarkerOptions.position(new LatLng(myLat,myLng));
            myMarkerOptions.title("该地的详细地址如下:");
            myMarkerOptions.snippet(myAddress);
            Marker myMarker=myAMap.addMarker(myMarkerOptions);
            myMarker.showInfoWindow();
            myAMap.moveCamera(CameraUpdateFactory.changeLatLng(
                    new LatLng(myLat,myLng))); //设置该地址为高德地图中心
           }
           @Override
           public void onGeocodeSearched(GeocodeResult geocodeResult, int i){ }
          });
  //通过RegeocodeQuery封装查询的地址信息,并指定坐标系类型和搜索范围
  RegeocodeQuery RegeocodeQuery=
          new RegeocodeQuery(myLatLonPoint,200,GeocodeSearch.AMAP);
  //查询指定经纬度,并将结果传入回调接口
  myGeocodeSearch.getFromLocationAsyn(RegeocodeQuery);
 }
}



03

代码说明


上面这段代码在MyCode\MySampleI66\app\src\main\java\com\bin\luo\mysample\ MainActivity.java文件中。
此实例的完整代码在MyCode\MySampleI66文件夹中。


04

补充说明


在测试代码时,必须保持网络畅通。


05

源代码下载

关注微信公众号,后台回复关键词 “Android App开发超实用代码294” 即可获得完整源代码。


06

参考书籍


扫码优惠购书


《Android App开发超实用代码集锦——jQuery Mobile+OpenCV+O》

ISBN:9787302589358

作者:罗帅、罗斌

定价:99元



问题描述+解决方案+真实源码+效果截图

介绍jQuery Mobile、OpenCV、OpenGL等在Android平台运行的应用

300个实例,提供完整源代码,边看边做边学



文章转载自清华计算机学堂,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论