在应用开发中,地图开发是经常需要使用的“组件”,国内比较出名的是就是百度地图和高德地图。

此博客讲的是高德地图实现定位和3D地图显示,并标注相应位置,话不多说,先看看效果,在上代码。

效果如图:

首先注册高德成为开发者(打开高德地图,点击底部的开发者平台),创建应用,按照要求填写相应信息,如下图:

途中包含了发布版的SHA1安全码和测试版SHA1安全码,两者的值可以看 博客 : Android Studio apk打包,keystore.jks文件生成,根据keystore密钥获取SHA1安全码

讲的很详细,照做就一定会成功获取的。

首先导入高德的jar包

选中jar包右键点击 Add As Library, 在build.fradle中看到如下代码 表示导包成功

    compile files('libs/AMap_Location_V3.0.0_20160922.jar')compile files('libs/AMap_Search_V3.5.0_20160927.jar')compile files('libs/AMap_3DMap_V4.1.1_20161019.jar')

代码:(注:项目代码目录中要添加一个接口文件 JniLibs 的os文件 才能绘制地图,具体下载源码查看,就不详细描述了)

/***** 讲诉了高德地图定位和3D地图显示** 打包和未打包的情况是不一样的,高德配置是可以配置调试版和发布版**/
public class MainActivity extends AppCompatActivity implements AMapLocationListener,GeocodeSearch.OnGeocodeSearchListener {private AMapLocationClient locationClient = null;private AMapLocationClientOption locationOption = null;private TextView textView;private String[] strMsg;private com.amap.api.maps.AMap aMap;private MapView mapView;private GeocodeSearch geocoderSearch;private Marker geoMarker;private static LatLonPoint latLonPoint;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);textView = (TextView) findViewById(R.id.text_map);mapView = (MapView) findViewById(R.id.map);mapView.onCreate(savedInstanceState);// 此方法必须重写Location();}private void initMap(){if (aMap == null) {aMap = mapView.getMap();//用高德默认图标//geoMarker= aMap.addMarker(new MarkerOptions().anchor(0.5f, 0.5f).icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_BLUE)));//自定义图标geoMarker = aMap.addMarker(new MarkerOptions().anchor(0.5f, 0.5f).icon(BitmapDescriptorFactory.fromBitmap(BitmapFactory.decodeResource(getResources(), R.mipmap.punch_dw))));}geocoderSearch = new GeocodeSearch(this);geocoderSearch.setOnGeocodeSearchListener(this);getAddress(latLonPoint);}@Overridepublic void onLocationChanged(AMapLocation loc) {if (null != loc) {Message msg = mHandler.obtainMessage();msg.obj = loc;msg.what = Utils.MSG_LOCATION_FINISH;mHandler.sendMessage(msg);}}Handler mHandler = new Handler() {public void dispatchMessage(android.os.Message msg) {switch (msg.what) {//定位完成case Utils.MSG_LOCATION_FINISH:String result = "";try {AMapLocation loc = (AMapLocation) msg.obj;result = Utils.getLocationStr(loc, 1);strMsg = result.split(",");Toast.makeText(MainActivity.this, "定位成功", Toast.LENGTH_LONG).show();textView.setText("地址:" + strMsg[0] + "\n" + "经    度:" + strMsg[1] + "\n" + "纬    度:" + strMsg[2]);latLonPoint= new LatLonPoint(Double.valueOf(strMsg[2]), Double.valueOf(strMsg[1]));initMap();} catch (Exception e) {Toast.makeText(MainActivity.this, "定位失败", Toast.LENGTH_LONG).show();}break;default:break;}};};public void Location() {// TODO Auto-generated method stubtry {locationClient = new AMapLocationClient(this);locationOption = new AMapLocationClientOption();// 设置定位模式为低功耗模式locationOption.setLocationMode(AMapLocationClientOption.AMapLocationMode.Battery_Saving);// 设置定位监听locationClient.setLocationListener(this);locationOption.setOnceLocation(true);//设置为单次定位locationClient.setLocationOption(locationOption);// 设置定位参数// 启动定位locationClient.startLocation();mHandler.sendEmptyMessage(Utils.MSG_LOCATION_START);} catch (Exception e) {Toast.makeText(MainActivity.this, "定位失败", Toast.LENGTH_LONG).show();}}/*** 响应逆地理编码*/public void getAddress(final LatLonPoint latLonPoint) {RegeocodeQuery query = new RegeocodeQuery(latLonPoint, 200,GeocodeSearch.AMAP);// 第一个参数表示一个Latlng,第二参数表示范围多少米,第三个参数表示是火系坐标系还是GPS原生坐标系geocoderSearch.getFromLocationAsyn(query);// 设置同步逆地理编码请求}/*** 地理编码查询回调*/@Overridepublic void onGeocodeSearched(GeocodeResult result, int rCode) {}/*** 逆地理编码回调*/@Overridepublic void onRegeocodeSearched(RegeocodeResult result, int rCode) {if (rCode == 1000) {if (result != null && result.getRegeocodeAddress() != null&& result.getRegeocodeAddress().getFormatAddress() != null) {Toast.makeText(MainActivity.this,result.getRegeocodeAddress().getFormatAddress()+ "附近",Toast.LENGTH_LONG).show();aMap.animateCamera(CameraUpdateFactory.newLatLngZoom(AMapUtil.convertToLatLng(latLonPoint), 15));geoMarker.setPosition(AMapUtil.convertToLatLng(latLonPoint));} else {}} else {}}/*** 方法必须重写*/@Overridepublic void onResume() {super.onResume();mapView.onResume();}/*** 方法必须重写*/@Overridepublic void onPause() {super.onPause();mapView.onPause();}/*** 方法必须重写*/@Overridepublic void onSaveInstanceState(Bundle outState) {super.onSaveInstanceState(outState);mapView.onSaveInstanceState(outState);}@Overridepublic void onDestroy() {super.onDestroy();mapView.onDestroy();}
}

AndroidManifest.xml中加入权限

 <!--允许程序打开网络套接字--><uses-permission android:name="android.permission.INTERNET" /><!-- 定位 --><!-- 用于访问GPS定位 --><uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission><uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS"></uses-permission><!--允许程序设置内置sd卡的写权限--><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /><!--允许程序获取网络状态--><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /><!--允许程序访问WiFi网络信息--><uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /><!--允许程序读写手机状态和身份--><uses-permission android:name="android.permission.READ_PHONE_STATE" /><!--允许程序访问CellID或WiFi热点来获取粗略的位置--><uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />

如果只实现高德定位可查看: Android Studio 中实现高德定位并获取相应信息

讲的很详细;有疑问的请留言。

源码点击下载

Android Studio之高德地图实现定位和3D地图显示相关推荐

  1. android显示地图代码,Android Studio之高德地图实现定位和3D地图显示(示例代码)

    /**** * 讲诉了高德地图定位和3D地图显示 * * 打包和未打包的情况是不一样的,高德配置是可以配置调试版和发布版 **/ public class MainActivity extends A ...

  2. android------之高德地图实现定位和3D地图显示

    2019独角兽企业重金招聘Python工程师标准>>> 在应用开发中,地图开发是经常需要使用的"组件",国内比较出名的是就是百度地图和高德地图. 此博客讲的是高德 ...

  3. android开发之高德地图不能定位,只显示格子

    android 在引用高德地图组件进行开发的时候,不能定位,只显示格子,如下图所示: 参考了网上的一下大家的解决方案,主要是 (1)检查申请的KEY是否正确.PS:申请方法请参考这篇博客,写的很全很详 ...

  4. 基于Android studio开发高德地图之连续定位、标点、画线

    目录 获取key值 创建地图 layout文件 Activity 源码:https://github.com/zzjdreams/gaode_map_track 截图:(这个是我叫我弟截图的,所以不是 ...

  5. Android中配置高德地图和定位蓝点

    最近一直在学习android,学到地图这里,遇到的坑也不少,所以就把它分享出来,一和大家一起学习,二为以后写项目看, 一.获取key 1.创建应用 首先,您得上(高德地图开放平台官网)注册一个账号,当 ...

  6. android studio引用高德地图api后地图显示白屏

    这个问题困惑了好几天,可以说是睡觉吃饭都会想这个问题,来来回回改了代码,查换key,重新写验证小程序.最后,总算是功夫不负有心人,吃再多苦也值了. 问题:as采用高德地图api,显示地图为白屏 解决方 ...

  7. Android Studio实现百度地图及定位

    文章目录 一.功能需求 二.实现过程 1. 实验环境 2.获取百度开发者KEY 3. 页面设计 4. Java代码实现 三.运行界面展示 四.源码 一.功能需求 根据官方文档,开发百度地图定位APP, ...

  8. Android Studio中高德地图的黑屏和白屏问题

    第一步 高德地图黑屏的时候,当时我的SDK版本是27[在build.gradle(Module.app)],是由于版本太高的原因导致的高德地图的黑屏.第二步 当我把SDK的版本调至25时,令我非常的兴 ...

  9. 南邮Android Studio应用高德地图API获取SHA1码

    这两天在做安卓实验,其中涉及到了高德地图API的使用,我在使用过程中发现输出结果为MD5验证失败,寻路失败的问题(忘记截图了).然后我个人就去查阅高德地图API的官方文档,也没查出个所以然,最后依靠C ...

最新文章

  1. Java调用库文件(JNI)(android对此有所改变)
  2. innodb_buffer_pool_size的安全上限
  3. wpa_supplicant drivers 查看跟踪
  4. 解决使用RabbitTemplate操作RabbitMQ,发生The channelMax limit is reached. Try later.问题
  5. spring-aop-01
  6. wide_and_deep 思维导图和代码
  7. mysqldump使用方法
  8. 人工智能与图像传感器
  9. java redis集群连接池_(08)redis之使用java客户端、spring连接redis、redis集群示例...
  10. nginx wsgi django 建站配置最终版
  11. Scala学习(六)练习
  12. 学习IOS 开发需要什么?
  13. [转载] Java 单例(Singleton)类
  14. 人机工程学座椅设计_人体工程学与座椅设计.ppt
  15. 在linux系统下观看和转码m3u8视频文件
  16. 抖音java表白教程_抖音表白代码
  17. 手机共享计算机网络连接,终于找到电脑网络共享给手机
  18. 谷歌默认打开hao123
  19. 利用Python解决利率相关计算问题(利率计算器):本金翻倍,定期取款,多重利率,通货膨胀等问题
  20. 经典BBS语录100条

热门文章

  1. Internet Download Manager v6.41Build 2简体中文版
  2. LVGL学习——初识动画 lv_anim_t
  3. 购物车模块redis和mysql_redis解决购物车的问题
  4. java-php-python-springboot志愿者服务平台计算机毕业设计
  5. 3DsMax —布尔制作口红
  6. 微信小程序 获取 手机验证码 短信验证码 后端功能实现解析
  7. PHP 手机短信发送验证码
  8. Android 获取设备号
  9. 离开汽车之家和新车评,那些我们喜欢的车评人会活的更好
  10. HTML中设置行高的属性是,line-height属性(行高标签用法)