高德地图应用试开发--第二版(百度试验号已阵亡)
来源:互联网 发布:labview编程详解书 编辑:程序博客网 时间:2024/06/03 14:21
一、基本工作
首先,关于高德地图开发需要做的基本工作,请看官方指导:http://lbs.amap.com/api/android-sdk/gettingstarted
(个人建议)在导入SDK时,建议使用第二种方法:通过Gradle集成SDK
只需要在主工程的build.gradle文件配置dependencies即可,极为方便,还是还是自动更新。不过有个缺点,断网时,工程将编译出错。
二、配置文件参考
本人自己的AndroidManifest.xml与build.gradle,不要复制!不要复制!参考参考!复制万一出了问题,就浪费时间了。
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.administrator.gd_map3"> <!-- Normal Permissions 不需要运行时注册 --> <!-- 请求网络 --> <uses-permission android:name="android.permission.INTERNET" /> <!--获取运营商信息,用于支持提供运营商信息相关的接口--> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <!--用于访问wifi网络信息,wifi信息会用于进行网络定位--> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <!--这个权限用于获取wifi的获取权限,wifi信息会用来进行网络定位--> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.CHANGE_CONFIGURATION" /> <!-- 需要运行时注册的权限 --> <!--用于进行网络定位--> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <!--用于访问GPS定位--> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <!--用于提高GPS定位速度--> <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" /> <!--写入扩展存储,向扩展卡写入数据,用于写入缓存数据--> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <!--读取缓存数据--> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> <!-- 更改设置 --> <uses-permission android:name="android.permission.WRITE_SETTINGS" /> <!-- 3.2.0版本增加 --> <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" /> <!-- 3.2.0版本增加--> <uses-permission android:name="android.permission.BLUETOOTH" /> <!--C:\Program Files\Java\jdk1.8.0_121\bin>keytool -list -v -keystore C:\Users\Administrator\GD_map2.jks--> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme"> <meta-data android:name="com.amap.api.v2.apikey" android:value="91901a1fb4d5b690240544c749464621"/> <activity android:name=".MainActivity" android:label="@string/app_name" android:theme="@style/AppTheme.NoActionBar"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <!-- 定位需要的服务 使用2.0的定位需要加上这个 --> <service android:name="com.amap.api.location.APSService" > </service> </application></manifest>
build.gradle
dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) implementation 'com.android.support:appcompat-v7:26.0.0' implementation 'com.android.support:design:26.0.0' implementation 'com.android.support.constraint:constraint-layout:1.0.2' testImplementation 'junit:junit:4.12' androidTestImplementation 'com.android.support.test:runner:0.5' androidTestImplementation 'com.android.support.test.espresso:espresso-core:2.2.2' compile 'com.amap.api:map3d-native:latest.integration' compile 'com.amap.api:map3d:latest.integration' compile 'com.amap.api:location:latest.integration'}
三、正式开始
1、添加地图
activity_main
<com.amap.api.maps.MapView android:id="@+id/map" android:layout_width="match_parent" android:layout_height="match_parent" />
MainActivity
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //添加地图 mapView = (MapView) findViewById(R.id.map); mapView.onCreate(savedInstanceState);// 此方法必须重写 if (amap == null) amap = mapView.getMap(); }
2、动态权限问题 http://blog.csdn.net/qq_36881363/article/details/70879438
3、定位
- 初始化定位基本参数,单次定位为例
public static LatLng oncelocation(Context context){ locationClientSingle = new AMapLocationClient(context); locationClientOption = new AMapLocationClientOption(); //是否使用单次定位,这句不写就是默认连续定位。 locationClientOption.setOnceLocation(true); // 地址信息 locationClientOption.setNeedAddress(true); //是否使用缓存,不写就是默认缓存,当仅仅作为单次定位使用时,我觉得要写否。 locationClientOption.setLocationCacheEnable(false); //将上面设置的locationClientOption定位参数,放入函数完成设置 locationClientSingle.setLocationOption(locationClientOption); //设置定位监听,locationSingleListener便是自定监听的名字,当监听到位置改变时将会调用。 locationClientSingle.setLocationListener(locationSingleListener); //开始定位 locationClientSingle.startLocation(); //这里的return不用在意,只是我后面的代码有需要用到才会加在这。 return location;}
- 定位数据监听
//获取坐标信息,拿我单次定位的监听举例,这里的locationSingleListener便是我上面初始化定位参数设置的监听器//我在监听里没有写多余的步骤,只是规规矩矩地把改变后的定位数据传给location了而已 static AMapLocationListener locationSingleListener = new AMapLocationListener() { @Override public void onLocationChanged(AMapLocation aMapLocation) { if (aMapLocation != null && aMapLocation.getErrorCode() == 0) { double longitude = aMapLocation.getLongitude(); double latitude = aMapLocation.getLatitude(); location = new LatLng(latitude, longitude); Log.i("Main","location change"); } else { String errText = "定位失败," + aMapLocation.getErrorCode() + ": " + aMapLocation.getErrorInfo(); Log.e("AmapErr", errText); } } };
- 跳转视角到定位位置,并显示蓝色定位点
MainActivity
imag.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { location = dingWei.oncelocation(MainActivity.this); //有更好的写法,不过这样看起来也挺舒服的,就懒得改了。 dingWei.movecamera(aMap,location); } });
movecamera(AMap aMap,LatLng location)
public static void movecamera(AMap aMap,LatLng location) { //添加定位点图标的 if (locMarker == null){ locMarker = aMap.addMarker(new MarkerOptions().position(location)); }else{ locMarker.setPosition(location); } //先获取当前缩放等级,然后再调整视角,这样在多次定位情况下不会出现重置视角高度的状况 float i = aMap.getCameraPosition().zoom; aMap.moveCamera(CameraUpdateFactory.newLatLngZoom(location, i)); }
0 0
- 高德地图应用试开发--第二版(百度试验号已阵亡)
- 安卓开发——Intent跳转地图应用(百度地图、高德地图)
- Android应用中打开百度地图、高德地图、网页版百度地图
- iOS开发——项目中的地图跳转(苹果地图,百度地图,高德地图)
- 应用内跳转百度,高德地图
- 百度地图应用开发(一)
- 百度地图应用开发(一)
- 百度地图应用开发(二)
- iOS 应用内跳转到百度地图、苹果地图、谷歌地图、高德地图等
- iOS开发 百度地图高德地图谷歌地图系统地图
- 从自己的应用跳转到百度、高德地图
- Android应用内直接打开高德或者百度地图
- 百度地图API开发应用
- 高德地图API开发应用-----地图显示+定位+marker
- 基于高德地图的应用开发-----DIY地图
- IOS 地图导航(其中包括苹果地图、百度地图、高德地图、谷歌地图)
- Android仿微信调用第三方地图应用导航(高德、百度、腾讯)
- 高德/百度地图定位
- c# 设计模式-单例模式
- python学习笔记(四)模块、面向对象
- 递推求解专题训练
- Pyhon 网络爬虫--简单的爬取功能
- 判断元素在数组中出现的次数
- 高德地图应用试开发--第二版(百度试验号已阵亡)
- 文章标题
- Maven Spring MVC + MyBatis 开发配置
- mysql数据库常用sql的分类整理
- HashMap集合
- C++:new和delete的用法
- 2017.04.18.错误小结
- LeetCode-1. Two Sum
- web项目中文传参sql查询数据库查不到记录解决办法