高德地图基本开发流程
来源:互联网 发布:红酒网络销售好做吗 编辑:程序博客网 时间:2024/05/23 18:31
地图如今已经离不开我们大家的生活了 ,作为开发者来说 ,能够尽可能开发一款完善的地图也是至关重要的
因此我对高德地图进行了一些研究,
下面我将 把我对高德地图的研究分享给大家
1.在高德应用管理后台创建新应用,获取AppKey
在这里我们会看到以下界面,它会让我们填入发布板SHA1值,那么这个SHA1值如何获取呢
SHA1的获取:
打开cmd命令在cmd控制台上 依次输入
cd .android
keytool -list -v -keystore debug.keystore
android
即可得到SHA1值,如下:
提交之后便会获取到AppKey
2.在高德地图开发平台上下载Android地图SDK,在libs 报下导入so库及jar包
2.在build.gradle加入以下
sourceSets {
main {
jniLibs.srcDirs = ['libs']
}
}
compile files('libs/AMap_Location_V3.4.0_20170427.jar')
compile files('libs/AMap_Search_V5.1.0_20170517.jar')
compile files('libs/Android_Map3D_SDK_V5.1.0_20170518.jar')
3.在清单文件中加权限和配置AppKey
<!--允许程序打开网络套接字-->
<uses-permissionandroid:name="android.permission.INTERNET"/>
<!--允许程序设置内置sd卡的写权限-->
<uses-permissionandroid:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<!--允许程序获取网络状态-->
<uses-permissionandroid:name="android.permission.ACCESS_NETWORK_STATE"/>
<!--允许程序访问WiFi网络信息-->
<uses-permissionandroid:name="android.permission.ACCESS_WIFI_STATE"/>
<!--允许程序读写手机状态和身份-->
<uses-permissionandroid:name="android.permission.READ_PHONE_STATE"/>
<!--允许程序访问CellID或WiFi热点来获取粗略的位置-->
<uses-permissionandroid:name="android.permission.ACCESS_COARSE_LOCATION"/>
配置AppKey
<meta-dataandroid:name="com.amap.api.v2.apikey"android:value="a530a2c6fa8f40ed4a486745d20c1ebe"/>
<serviceandroid:name="com.amap.api.location.APSService"></service>
4.在xml中写mapview 控件
<com.amap.api.maps.MapView
android:layout_width="368dp"
android:layout_height="495dp"
android:id="@+id/mapview"
tools:layout_editor_absoluteY="8dp"
tools:layout_editor_absoluteX="8dp"></com.amap.api.maps.MapView>
5.在avtivity 中显示定位蓝点
mapview= (MapView) findViewById(R.id.mapview);
//在activity执行onCreate时执行mMapView.onCreate(savedInstanceState),创建地图
mapview.onCreate(savedInstanceState);// 此方法须覆写,虚拟机需要在很多情况下保存地图绘制的当前状态。
//初始化地图控制器对象
if(aMap==null) {
aMap=mapview.getMap();
}
myLocationStyle=newMyLocationStyle();//初始化定位蓝点样式类myLocationStyle.myLocationType(MyLocationStyle.LOCATION_TYPE_LOCATION_ROTATE);//连续定位、且将视角移动到地图中心点,定位点依照设备方向旋转,并且会跟随设备移动。(1秒1次定位)如果不设置myLocationType,默认也会执行此种模式。
myLocationStyle.interval(2000);//设置连续定位模式下的定位间隔,只在连续定位模式下生效,单次定位模式下不会生效。单位为毫秒。
myLocationStyle.myLocationType(MyLocationStyle.LOCATION_TYPE_LOCATION_ROTATE_NO_CENTER);//连续定位、蓝点不会移动到地图中心点,定位点依照设备方向旋转,并且蓝点会跟随设备移动。
aMap.setMyLocationStyle(myLocationStyle);//设置定位蓝点的Styl
// aMap.getUiSettings().setMyLocationButtonEnabled(true);设置默认定位按钮是否显示,非必需设置。
aMap.setMyLocationEnabled(true);// 设置为true表示启动显示定位蓝点,false表示隐藏定位蓝点并不进行定位,默认是false。
@Override
protected voidonDestroy() {
super.onDestroy();
//在activity执行onDestroy时执行mMapView.onDestroy(),销毁地图
mapview.onDestroy();
}
@Override
protected voidonResume() {
super.onResume();
//在activity执行onResume时执行mMapView.onResume (),重新绘制加载地图
mapview.onResume();
}
@Override
protected voidonPause() {
super.onPause();
//在activity执行onPause时执行mMapView.onPause (),暂停地图的绘制
mapview.onPause();
}
6.POI检索
query=newPoiSearch.Query(et_point,"",et_city);
//keyWord表示搜索字符串,
//第二个参数表示POI搜索类型,二者选填其一,选用POI搜索类型时建议填写类型代码,码表可以参考下方(而非文字)
//cityCode表示POI搜索区域,可以是城市编码也可以是城市名称,也可以传空字符串,空字符串代表全国在全国范围内进行搜索
query.setPageSize(10);// 设置每页最多返回多少条poiitem
// query.setPageNum(currentPage);//设置查询页码
poiSearch=newPoiSearch(this,query);
poiSearch.setOnPoiSearchListener(this);
poiSearch.searchPOIAsyn();
@Override
public voidonPoiSearched(PoiResult poiResult,inti) {
aMap.clear();
ArrayList<PoiItem> pois = poiResult.getPois();
for(PoiItem poiItem : pois) {
LatLonPoint latLonPoint = poiItem.getLatLonPoint();
LatLng latLng =newLatLng(latLonPoint.getLatitude(), latLonPoint.getLongitude());
MarkerOptions markerOption =newMarkerOptions().position(latLng).title(poiItem.toString()).snippet("去吃吧");
aMap.addMarker(markerOption);
}
}
7.点击覆盖物并规划线路(要在源码中复制几个类)
aMap.setOnMarkerClickListener(newAMap.OnMarkerClickListener() {
@Override
public booleanonMarkerClick(Marker marker) {
//获取起点经纬度
Location myLocation =aMap.getMyLocation();
//获取终点经纬度
LatLng position = marker.getPosition();
LatLonPoint from=newLatLonPoint(myLocation.getLatitude(),myLocation.getLongitude());
LatLonPoint to=newLatLonPoint(position.latitude,position.longitude);
RouteSearch.FromAndTo fromAndTo =newRouteSearch.FromAndTo(from,to);
RouteSearch.DriveRouteQuery query =newRouteSearch.DriveRouteQuery(fromAndTo, RouteSearch.DRIVING_MULTI_CHOICE_AVOID_CONGESTION_NO_HIGHWAY,null,null,"");
RouteSearch routeSearch =newRouteSearch(MainActivity.this);
routeSearch.setRouteSearchListener(MainActivity.this);
routeSearch.calculateDriveRouteAsyn(query);
return false;
}
});
@Override
public voidonDriveRouteSearched(DriveRouteResult result,interrorCode) {
aMap.clear();// 清理地图上的所有覆盖物
if(errorCode == AMapException.CODE_AMAP_SUCCESS) {
if(result !=null&& result.getPaths() !=null) {
if(result.getPaths().size() >0) {
finalDrivePath drivePath = result.getPaths()
.get(0);
DrivingRouteOverlay drivingRouteOverlay =newDrivingRouteOverlay(
this,aMap, drivePath,
result.getStartPos(),
result.getTargetPos(),null);
drivingRouteOverlay.setNodeIconVisibility(false);//设置节点marker是否显示
drivingRouteOverlay.setIsColorfulline(true);//是否用颜色展示交通拥堵情况,默认true
drivingRouteOverlay.removeFromMap();
drivingRouteOverlay.addToMap();
drivingRouteOverlay.zoomToSpan();
}else if(result !=null&& result.getPaths() ==null) {
ToastUtil.show(this, R.string.no_result);
}
}else{
ToastUtil.show(this, R.string.no_result);
}
}else{
ToastUtil.showerror(this.getApplicationContext(), errorCode);
}
}
哈哈 到此结束了 ,以后有空在写,如果哪里写的不对还请各位大神指点
阅读全文
2 0
- 高德地图基本开发流程
- Android高德地图开发流程
- 高德地图开发之基本控件
- 基于高德地图开发--创建基本的地图
- 高德地图 JavaScript API 的开发流程
- 高德地图定位及导航开发流程
- ios高德地图流程
- 高德地图开发
- 高德地图开发
- 高德地图基本显示
- 【高德地图开发】---地图显示
- Android高德地图开发 地图事件
- 【高德地图开发3】---地图显示
- iOS地图开发-高德地图
- 高德地图开发--地图的显示
- 高德地图开发手册
- 高德地图开发记录
- 【高德地图开发】---简介
- Fragment 生命周期(一)
- SEO与SEM的好处和区别
- git基本操作
- Boost库入门
- 8月7日总结
- 高德地图基本开发流程
- apache camel不同主机上转发数据
- 正则表达式
- treeset类
- jedis与redis
- java基础之DateFormat类
- Linux下设置开机自启动Tomcat
- java中==和equals的区别
- SDUT-数据结构实验之排序五:归并求逆序数