现在,移动应用中集成地图已经成为一种趋势。导航 - 作为地图中不可或缺的一项功能,被很多移动应用所青睐,然而,导航方式选择上,为了减少不必要的资源和apk容量,一般应用都选择通过调用第三方的地图应用来实现导航功能。在介绍之前,先看一下最终效果:
本文主要提供几种常用的调起三方地图应用的导航平台,以高德,百度,腾讯,谷歌地图为例。
各大地图服务商基本都提供了Uri,方便其他应用调用(除了腾讯),uri网址如上所示.
基本看了以上的文档就会使用了,下面就提供几个平台的基本写法吧:
高德地图导航:
高德地图较为特殊,其他地图平台都可以选择传入地址或者经纬度作为参数,而高德要求必须有经纬度。没办法,那就先撸个地理编码的轮子吧,方便我们将地址信息转化为准确的经纬度坐标,具体看下面代码:
/**
* by moos on 2017/09/18
* func:调用高德地图的地理编码接口,返回经纬度坐标
* @param address
*/
private void translateAddressToLocation(String address){
OkHttpUtils
.get()
.url(GEOCODE_HTTP_URL + "address="+address+"&key="+SELF_AMAP_KEY)
.build()
.execute(new StringCallback() {
@Override
public void onError(Call call, Exception e, int id) {
Log.e("地理编码失败=", e.getMessage());
//DialogUtils.dismissProgressDialog();
Toast.makeText(UnityScanActivity.this, getString(R.string.act_qr_code_fail), Toast.LENGTH_LONG).show();
}
@Override
public void onResponse(String response, int id) {
Logger.e("地理编码结果 =" + response);
resultBean = JSONObject.parseObject(response, GeocodeResultBean