大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
年初时候开发了一版Google Map 地图展示店铺地址并标注点击详情,当初完整的上线Google Play 之后就没有关注过。
我们提供的服务有:成都网站设计、做网站、微信公众号开发、网站优化、网站认证、从化ssl等。为1000多家企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的从化网站制作公司
具体原因就是因为忘替换Google Map AppKey ...
而且上线Google Play 商店会有一个新的 应用凭证签署凭证,与打包上传Release 版凭证是有区别的。在Google Play 发布后使用 地图管理配置的 AppKey 的SHA1值 需要使用这个才能正常展示!!
以下几个流程,最实在的就是看官方SDK了,查看官方的栗子一顿狂撸!
栗子使用官方Demo 必备,一般就是先玩玩Demo 查看你想要的功能再进行移植定制等
进去查看 最新的地图服务版本依赖,添加至build.gradle
Google Maps Description in build.gradle
要去Google APIs 管理平台创建一个工程项目,创建凭证 申请配置 API KEY
切记别忘记开启,否则你对应账号项目中配置的APPKEY 没有开启服务 根本在应用上看不到地图!
申请之后的 Key 放入 AndroidManifest.xml 文件中
XML
以上来自官方栗子
上架后 要注意 使用 配置 商店配置的 SHA1值, 建议配置 debug + release + 上传后的 SHA1值 一起配置 ,否则展示空白滴!
所以一般不显示地图的问题, 要么是 APPKEY 配置 SHA1值的问题,要么就是没有启用地图 API 。
一、基本概念:
(一)、百度地图:
百度地图 Android SDK是一套基于Android 2.1及以上版本设备的应用程序接口。 您可以使用该套 SDK开发适用于Android系统移动设备的地图应用,通过调用地图SDK接口,您可以轻松访问百度地图服务和数据, 构建功能丰富、交互性强的地图类应用程序。
百度地图Android SDK提供的所有服务是免费的,接口使用无次数限制。您需申请密钥(key)后, 才可使用百度地图Android SDK。
(二)、LBS:(Location based Service)基于位置的服务
基于位置的服务,它是通过电信移动运营商的无线电通讯网络(如GSM网、CDMA网)或外部定位方式(如GPS)获取移动终端用户的位置信息(地理坐标,或大地坐标),在地理信息系统(外语缩写:GIS、外语全称:Geographic Information System)平台的支持下,为用户提供相应服务的一种增值业务。
二、百度地图使用步骤:【参照()】
(一)、HelloBaiduMap:
1、第一步:申请百度地图密钥(API_KEY):
2、第二步:在工程里新建libs文件夹,将开发包里的baidumapapi_vX_X_X.jar拷贝到libs根目录下,将libBaiduMapSDK_vX_X_X.so拷贝到libs\armeabi目录下(官网demo里已有这两个文件,如果要集成到自己的工程里,就需要自己添加),拷贝完成后的工程目录如下图所示;
注:liblocSDK3.so和locSDK_3.1.jar为百度定位SDK所使用资源,开发者可根据实际需求自行添加。
3、第三步:在AndroidManifest中添加开发密钥、所需权限等信息;
application
meta-data
android:name="com.baidu.lbsapi.API_KEY"
android:value="P3G69b5s87YG5M31f8A7oyLW"/
/application
uses-permissionandroid:name="android.permission.GET_ACCOUNTS"/
uses-permissionandroid:name="android.permission.USE_CREDENTIALS"/
uses-permissionandroid:name="android.permission.MANAGE_ACCOUNTS"/
uses-permissionandroid:name="android.permission.AUTHENTICATE_ACCOUNTS"/
uses-permissionandroid:name="android.permission.ACCESS_NETWORK_STATE"/
uses-permissionandroid:name="android.permission.INTERNET"/
uses-permissionandroid:name="com.android.launcher.permission.READ_SETTINGS"/
uses-permissionandroid:name="android.permission.CHANGE_WIFI_STATE"/
uses-permissionandroid:name="android.permission.ACCESS_WIFI_STATE"/
uses-permissionandroid:name="android.permission.READ_PHONE_STATE"/
uses-permissionandroid:name="android.permission.WRITE_EXTERNAL_STORAGE"/
uses-permissionandroid:name="android.permission.BROADCAST_STICKY"/
uses-permissionandroid:name="android.permission.WRITE_SETTINGS"/
uses-permissionandroid:name="android.permission.READ_PHONE_STATE"/
4、第四步:在布局文件中添加地图控件:
com.baidu.mapapi.map.MapView
android:id="@+id/mapView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clickable="true"/
5、第五步:在应用程序创建时初始化 SDK引用的Context 全局变量:
protectedvoid onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 在使用SDK各组件之前初始化context信息,传入ApplicationContext
// 注意该方法要再setContentView方法之前实现
SDKInitializer.initialize(getApplicationContext());
// 装载布局文件
setContentView(R.layout.activity_main);
}
6、第六步:创建地图Activity,管理地图生命周期:
publicclass MainActivity extends Activity {
private MapView mapView;
@Override
protectedvoid onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 在使用SDK各组件之前初始化context信息,传入ApplicationContext
// 注意该方法要再setContentView方法之前实现
SDKInitializer.initialize(getApplicationContext());
// 装载布局文件
setContentView(R.layout.activity_main);
mapView = (MapView) findViewById(R.id.mapView);
}
@Override
protectedvoid onResume() {
super.onResume();
mapView.onResume();
}
@Override
protectedvoid onPause() {
super.onPause();
mapView.onPause();
}
@Override
protectedvoid onDestroy() {
super.onDestroy();
mapView.onDestroy();
}
}
(二)、基础地图:
1、实现基础地图的操作步骤:
布局文件中使用MapView;
初始化SDK,并检查Key的合法性;
SDKInitializer.initialize(getApplicationContext());
checkKEY();
初始化BaiduMap对象;
对MapView进行findViewById();
MapView对象调用getMap(),返回BaiduMap;
设置BaiduMap;
setMapType();
setTrafficEnabled();
(三)、POI搜索:
1、实现POI搜索的操作步骤:
布局文件中使用fragment,用来实现对BaiduMap的加载;
class="com.baidu.mapapi.map.SupportMapFragment"
当前Activity继承于FragementActivity;
初始化SDK,并检查Key的合法性;
SDKInitializer.initialize(getApplicationContext());
checkKEY();
备注:该两句话必须放在setContentView()之前。
初始化BaiduMap对象;
baiduMap = ((SupportMapFragment) getSupportFragmentManager() .findFragmentById(R.id.fragment_poi_map)).getBaiduMap();
初始化PoiSearch对象;
PoiSearch.newInstance();
给PoiSearch对象设置监听器;
setOnGetPoiSearchResultListener(),重写onGetPoiResult()方法;
自定义PoiOverlay类,实现对每个标记的单击监听;
通过onPoiClick()方法,获取每个PoiInfo中的信息。如果这个对象中包含有明细,可以打开一个新页面来展示兴趣点的详细介绍。
在AndroidManifest.xml文件中配置PlaceCaterActivity页面;
该页面是Baidu提供的POI的明细介绍页面。
PoiSearch对象调用searchInBound()、searchInCity() 、 searchNearby()方法实现兴趣点查询。
【总结:】核心步骤:
实例化BaiduMap,PoiSearch对象;
PoiSearch对象设置OnGetPoiSearchResultListener()监听;
PoiSearch对象调用searchInCity()方法触发监听。
(四)、线路规划:
1、实现路线规划的操作步骤:
布局文件中使用MapView,用来实现对BaiduMap的加载;
初始化SDK,并检查Key的合法性;
SDKInitializer.initialize(getApplicationContext());
checkKEY();
初始化MapView;
调用findViewById()
初始化BaiduMap对象;
baiduMap = MapView对象.getMap();
初始化RoutePlanSearch对象;
RoutePlanSearch.newInstance();
给RoutePlanSearch对象设置监听器;
setOnGetRoutePlanResultListener(),重写onGetWalkingRouteResult()、onGetTransitRouteResult()、onGetDrivingRouteResult()方法;
自定义三种RouteOverlay类(WalkingRouteOverlay、TransitRouteOverlay、DrivingRouteOvelray);
调用RoutePlanSearch对象的三种方法(drivingSearch()、transitSearch()、walkingSearch())实现路线规划。
【总结:】核心步骤:
实例化BaiduMap,RoutePlanSearch对象;
RoutePlanSearch对象设置OnGetRoutePlanResultListener监听;
RoutePlanSearch对象调用drivingSearch()、transitSearch()、walkingSearch()方法触发监听。
(五)、公交查询:
1、实现公交查询的操作步骤:
布局文件中使用fragment,用来实现对BaiduMap的加载;
class="com.baidu.mapapi.map.SupportMapFragment"
初始化SDK,并检查Key的合法性;
SDKInitializer.initialize(getApplicationContext());
checkKEY();
当前Activity继承于FragementActivity;
初始化BaiduMap对象;
baiduMap = ((SupportMapFragment) getSupportFragmentManager() .findFragmentById(R.id.fragment_poi_map)).getBaiduMap();
初始化PoiSearch对象/初始化BusLineSearch对象;
PoiSearch.newInstance();
BusLineSearch.newInstance();
给BusLineSearch对象设置监听器;
setOnGetBusLineSearchResultListener(),重写onGetBusLineResult()方法;
给PoiSearch对象设置监听器;
setOnGetPoiSearchResultListener(),重写onGetPoiResult()方法;
在这个监听器中调用BusLineSearch对象的searchBusLine()方法;
给按钮增加单击监听事件,实现PoiSearch对象的searchInBound()、searchInCity() 、 searchNearby()方法实现兴趣点查询。
【总结:】核心步骤:
实例化BaiduMap、PoiSearch对象及BusLineSearch对象;
PoiSearch对象设置OnGetPoiSearchResultListener()监听;BusLineSearch对象设置OnGetBusLineSearchResultListener监听;
在PoiSearch对象的监听回调方法onGetPoiResult()中调用busLineSearch对象的searchBusLine()方法;
PoiSearch对象调用searchInCity()方法触发整个监听。
【备注:】
整体思路:先调用POI查询,在POI查询中的监听器中执行BusLine查询。
Android的地图api有很多,下面就简单的说下常见的几款。
百度地图:在开发中也是用的最多的。地图更新比较快,功能齐全,使用也挺简单。还有demo,文档也很丰富。
高德地图:功能也很全,感觉不一样的地方就是地图加载很快,UI更加清新。导航很强大。而且高德API的论坛挺专业的。
Google地图:ui很简约。功能那当然不用说了。但是你懂得,在我朝支持有的时候无法响应。所以只能放弃。
最后腾讯地图、搜狗地图、老虎地图等等就不多说了
你好:
首先到百度地图API,看你需要android开发的类型,
可以选择这4个:Android地图SDK Android定位SDK Android导航SDK Android全景SDK;
你看需要的是哪一个,点进去,然后会看到开发指南,第一步申请对应的key,
然后下载API对应的demo,把lib都引进去,照着demo做,demo没有的就查看对应组件的类参考,
做一次就很容易了
调用setMapStatus来改变中心点的。
创建一个点LatLng cenpt = new LatLng(30.663791,104.07281);
通过点构建一个地图状态
MapStatus mMapStatus = new MapStatus.Builder()
.target(cenpt)
.zoom(12) //这个12是缩放对的级别
.build();
3.构建MapStatusUpdate对象,来便描述地图状态将要发生的变化
4.调用地图 setMapStatus改变地图的中心点
mBaiduMap.setMapStatus(mMapStatusUpdate);
高德地图 Android SDK 是一套地图开发调用接口,开发者可以轻松地在自己的Android应用中加入地图相关的功能,包括:地图显示(含室内、室外地图)、与地图交互、在地图上绘制、兴趣点搜索、地理编码、离线地图等功能。
点我获取Key
如何申请 Key
2.2 将 jar 包放入 libs 目录下。然后 右键-选择 Add As Library,导入到工程中。