(转)Android之高德地图SDK配置及简单使用详解
2017-11-28 14:30
716 查看
原地址:http://blog.csdn.net/ygd1994/article/details/51437975
需要用到的东西请去高德地图API官网下载
本次教程是对比着高德官网的demo一步步添加东西,所以需要有一份demo就够了。
1.打开高德地图的demo(AMap3DDemo),同时新建一个项目
2.将demo中的带Amap的三个jar包复制到新建项目的lib目录下,同时添加依赖项
3.在app下新建个directory—>jniLibs,然后在下面新建四个目录,如下:
![](http://img.blog.csdn.net/20160517162038161)
4.然后拖到main方法中,在android下就可以看到
![](http://img.blog.csdn.net/20160517162136208)
5.然后再demo下的so文件都放在四个目录下(四个目录放的东西一样)
![](http://img.blog.csdn.net/20160517162210834)
6.将demo里面的权限复制到相应位置
7.将meta标签复制到相应位置同时去高德API官网申请个key填到相应位置
8.将下面服务那句也复制到相应位置
9.在布局中添加个MapView
10.将主函数中location文件夹下的LocationModeSourceActivity.java中有用的东西复制到主函数中
以上,就可以实现最简单的定位
附代码
清单文件:
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
主函数:
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
布局文件中添加一个MapView即可
2
3
4
5
遇到的错误:(下面这句报错)
错误类型:java.lang.UnsatisfiedLinkError: Native method not found: com.autonavi.amap.mapcore.MapCore.nativeNewInstance:(Ljava/lang/String;Ljava/lang/String;)J
解决方法:将主函数中继承的v7包的AppCompatActivity改为Activity即可。
需要用到的东西请去高德地图API官网下载
本次教程是对比着高德官网的demo一步步添加东西,所以需要有一份demo就够了。
1.打开高德地图的demo(AMap3DDemo),同时新建一个项目
2.将demo中的带Amap的三个jar包复制到新建项目的lib目录下,同时添加依赖项
3.在app下新建个directory—>jniLibs,然后在下面新建四个目录,如下:
4.然后拖到main方法中,在android下就可以看到
5.然后再demo下的so文件都放在四个目录下(四个目录放的东西一样)
6.将demo里面的权限复制到相应位置
7.将meta标签复制到相应位置同时去高德API官网申请个key填到相应位置
8.将下面服务那句也复制到相应位置
9.在布局中添加个MapView
10.将主函数中location文件夹下的LocationModeSourceActivity.java中有用的东西复制到主函数中
以上,就可以实现最简单的定位
附代码
清单文件:
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.ygd.myamap"> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.CHANGE_CONFIGURATION" /> <uses-permission android:name="android.permission.WAKE_LOCK" /> <uses-permission android:name="android.permission.WRITE_SETTINGS" /> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/AppTheme"> <meta-data android:name="com.amap.api.v2.apikey" android:value="50b8319a5d03de4dbfa4ee6bd79756fc" /> <activity android:name=".MainActivity"> <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>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
主函数:
public class MainActivity extends AppCompatActivity implements LocationSource, AMapLocationListener { private MapView mapView; private AMap aMap; private AMapLocationClient mlocationClient; private OnLocationChangedListener mListener; private AMapLocationClientOption mLocationOption; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mapView= (MapView) findViewById(R.id.map); mapView.onCreate(savedInstanceState);// 此方法必须重写 init(); } /** * 初始化 */ private void init() { if (aMap == null) { aMap = mapView.getMap(); setUpMap(); } } /** * 设置一些amap的属性 */ private void setUpMap() { aMap.setLocationSource(this);// 设置定位监听 aMap.getUiSettings().setMyLocationButtonEnabled(true);// 设置默认定位按钮是否显示 aMap.setMyLocationEnabled(true);// 设置为true表示显示定位层并可触发定位,false表示隐藏定位层并不可触发定位,默认是false // 设置定位的类型为定位模式 ,可以由定位、跟随或地图根据面向方向旋转3种 //跟随:LOCATION_TYPE_MAP_FOLLOW //旋转:LOCATION_TYPE_MAP_ROTATE //定位:LOCATION_TYPE_LOCATE aMap.setMyLocationType(AMap.LOCATION_TYPE_LOCATE); } /** * 定位成功后回调函数 */ @Override public void onLocationChanged(AMapLocation amapLocation) { if (mListener != null && amapLocation != null) { if (amapLocation != null && amapLocation.getErrorCode() == 0) { Log.d("===经度:",""+amapLocation.getLongitude()); Log.d("===纬度:",""+amapLocation.getLatitude()); mListener.onLocationChanged(amapLocation);// 显示系统小蓝点 } else { String errText = "定位失败," + amapLocation.getErrorCode()+ ": " + amapLocation.getErrorInfo(); Log.e("AmapErr",errText); } } } /** * 激活定位 */ @Override public void activate(OnLocationChangedListener listener) { mListener = listener; if (mlocationClient == null) { mlocationClient = new AMapLocationClient(this); mLocationOption = new AMapLocationClientOption(); //设置定位监听 mlocationClient.setLocationListener(this); //设置为高精度定位模式 mLocationOption.setLocationMode(AMapLocationClientOption.AMapLocationMode.Hight_Accuracy); //设置定位参数 mlocationClient.setLocationOption(mLocationOption); // 此方法为每隔固定时间会发起一次定位请求,为了减少电量消耗或网络流量消耗, // 注意设置合适的定位时间的间隔(最小间隔支持为2000ms),并且在合适时间调用stopLocation()方法来取消定位请求 // 在定位结束后,在合适的生命周期调用onDestroy()方法 // 在单次定位情况下,定位无论成功与否,都无需调用stopLocation()方法移除请求,定位sdk内部会移除 mlocationClient.startLocation(); } } /** * 停止定位 */ @Override public void deactivate() { mListener = null; if (mlocationClient != null) { mlocationClient.stopLocation(); mlocationClient.onDestroy(); } mlocationClient = null; } /** * 方法必须重写 */ @Override protected void onResume() { super.onResume(); mapView.onResume(); } /** * 方法必须重写 */ @Override protected void onPause() { super.onPause(); mapView.onPause(); deactivate(); } /** * 方法必须重写 */ @Override protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); mapView.onSaveInstanceState(outState); } /** * 方法必须重写 */ @Override protected void onDestroy() { super.onDestroy(); mapView.onDestroy(); if(null != mlocationClient){ mlocationClient.onDestroy(); } } }1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
布局文件中添加一个MapView即可
<com.amap.api.maps.MapView android:id="@+id/map" android:layout_width="match_parent" android:layout_height="match_parent" > </com.amap.api.maps.MapView>1
2
3
4
5
遇到的错误:(下面这句报错)
mapView.onCreate(savedInstanceState);1
错误类型:java.lang.UnsatisfiedLinkError: Native method not found: com.autonavi.amap.mapcore.MapCore.nativeNewInstance:(Ljava/lang/String;Ljava/lang/String;)J
解决方法:将主函数中继承的v7包的AppCompatActivity改为Activity即可。
相关文章推荐
- Android之高德地图SDK配置及简单使用详解
- Android Studio中找到项目的密匙数字证书(MD5和SHA1)配置高德地图Android地图SDK【高德地图使用】
- Android2.2 sdk开发环境和模拟器 配置图解版 (详解)
- android使用百度地图、定位SDK实现地图和定位功能!(最新、可用+吐槽)
- Log4j 2.0在开发中的高级使用详解—配置简单的文件输出(四)
- [Android实例] Android中使用Google 地图实例详解
- 最简单实用的MongoDB安装教程:在CentOS中使用 yum 安装MongoDB及服务器端配置详解
- 最简单实用的MongoDB安装教程:在CentOS中使用 yum 安装MongoDB及服务器端配置详解
- Android SlidingMenu 简单配置和使用
- VLC SDK在VS2010中的配置及简单使用举例
- android 使用Eclipse开发NDK的配置和简单使用
- VLC SDK在VS2010中的配置及简单使用举例
- 地图入门(一):Android上使用Google Maps加标注的最最简单的例子
- 慕课网新课上线:使用高德iOS SDK开发地图应用
- android使用百度地图、定位SDK实现地图和定位功能!(最新、可用+吐槽)
- android google map 自定义地图的图层 简单使用(二)
- android使用百度地图、定位SDK实现地图和定位功能!(最新、可用+吐槽)
- Android使用SDK方法详解
- Android APK反编译就这么简单 详解(附图)和使用AXMLPrinter2.jar批量反编译xml文件
- 最简单实用的MongoDB安装教程:在CentOS中使用 yum 安装MongoDB及服务器端配置详解