由于项目需求,需要一个定位功能,通过google或百度,搜到一个cordova-plugin-geolocation的插件,在ios上可以用,但是在android就呵呵了,原因就不说了,大家都知道。所以
android需要用到百度的一个插件实现定位功能。
Android:
1.首先要申请一个百度地图密钥
2.添加百度定位插件 ionic plugin add https://github.com/mrwutong/cordova-qdc-baidu-location --variable API_KEY="<API_KEY>" ---API_KEY 即百度密钥
3.使用方法
在需要定位的地方加入下列代码
baidu_location.getCurrentPosition(function ( message ) { console.log(message); }, function ( message ) { console.log(message); });
插件默认只提供经纬度信息,如果需要详细的信息,需要到BaiduLocation.java修改
option.setIsNeedAddress(false); 改为 option.setIsNeedAddress(true);
Ios:
1.添加官方定位插件 cordova plugin add cordova-plugin-geolocation 附文档地址
2.使用方法
在需要使用定位的地方添加下列代码
module.controller('GeoCtrl', function($cordovaGeolocation) { var posOptions = {timeout: 10000, enableHighAccuracy: false}; $cordovaGeolocation.getCurrentPosition(posOptions) .then(function (position) { var lat = position.coords.latitude var long = position.coords.longitude }, function(err) { // error });
如果需要详细信息,可以使用百度的Geocoding API实现根据经纬度获取详细信息。
使用方法:
$http.jsonp("http://api.map.baidu.com/geocoder/v2/?callback=JSON_CALLBACK&mcode=com.xxxxx.-&location=39.983424,116.322987&output=json&pois=1&ak=您的ak")
.success(function(data){ console.log(data) })
添加mcode的时候 ios 的就是申请密钥时的安全码。
注意:每添加一个插件都要 执行ionic platform rm android 或ionic platform rm ios ,ionic platform add android 或ionic platform add ios 之后,插件才能运行。