做商家列表,要求查看自己距离周边的商家的距离,并对远近进行排序
1.使用h5plus提供的方法获取自己当前位置的经纬值
2.使用高德地图提供的api来进行距离计算距离
mui.plusReady(function () {
var latlong = []
plus.geolocation.getCurrentPosition(
function (p) {
latlong = [p.coords.longitude, p.coords.latitude]; //获取当前定位
localStorage.setItem('latlong', latlong )//保存当前定位,但保存后会变为string
})
})
这是最坑的地方,获取的定位信息只能在此方法内用,只能使用缓存方法,一直想有没用好的方法,2小时后我妥协了。
template.defaults.imports.latlong = function (long, lat) {
var thislatlong = localStorage.getItem('latlong').split(',')//将当前定位取出,并转为array
var newlatlong = []
for (var i = 0; i < thislatlong.length; i++) {
newlatlong.push(parseFloat(thislatlong[i]))//将新array内的string转为float类型
}
var shoplatlong = [long, lat] //传入商户位置
var dis = AMap.GeometryUtil.distance(newlatlong, shoplatlong);//计算距离
if (shoplatlong[0] != 0) {
dis = (dis / 1000).toFixed(1) + '公里'//将m单位改为km
} else {
dis = '未知'//用户未传入定位的情况
}
return dis
}
使用的引擎模板,使用模板变量方法,将获取商户的经纬度传入