242 lines
6.3 KiB
JavaScript
242 lines
6.3 KiB
JavaScript
var arr = [];
|
||
mui.plusReady(function(){
|
||
|
||
var maps = [{
|
||
pname: 'com.baidu.BaiduMap',
|
||
action: 'baidumap',
|
||
name: '百度地图'
|
||
}, {
|
||
pname: 'com.autonavi.minimap',
|
||
action: 'iosamap',
|
||
name: '高德地图'
|
||
}
|
||
// , {
|
||
// pname: 'com.google.android.apps.maps',
|
||
// action: 'com.google.android.apps.maps',
|
||
// name: '谷歌地图'
|
||
// }
|
||
// , {
|
||
// pname: 'com.tencent.map',
|
||
// action: 'com.google.android.apps.maps',
|
||
// name: '腾讯地图'
|
||
// },
|
||
]
|
||
// checkApp("com.baidu.BaiduMap", "baidumap", "百度地图")
|
||
// checkApp("com.autonavi.minimap", "iosamap", "高德地图")
|
||
// checkApp("com.google.android.apps.maps", "com.google.android.apps.maps", "谷歌地图")
|
||
// 判断地图软件是否安装
|
||
// maps= toJson(maps)
|
||
// //console.log(maps)
|
||
$.each(maps, function(i, v) {//不能写进点击事件函数里 不然点击一次增加一个title
|
||
var that = this
|
||
checkApp(that.pname, that.action, that.name)
|
||
})
|
||
|
||
function checkApp(pn, ac, name) { // pname:android 包名 action:ios包名 name:用作底部弹出
|
||
if (plus.runtime.isApplicationExist({
|
||
pname: pn, //包名
|
||
action: ac //ios包名
|
||
})) {
|
||
// //console.log("微信应用已安装");
|
||
title = {
|
||
title: name
|
||
};
|
||
arr.push(title)
|
||
} else {
|
||
|
||
}
|
||
}
|
||
var viewportHeight = $(window).height();
|
||
$(document).on('scroll', function() {
|
||
var scrollTop = $(window).scrollTop();
|
||
var x = scrollTop + viewportHeight - $("#apear").position().top;
|
||
if (x > 0)
|
||
{
|
||
app.loadNextPage();
|
||
}
|
||
})
|
||
})
|
||
|
||
function copyToClip (text) {
|
||
var Context = plus.android.importClass("android.content.Context");
|
||
var main = plus.android.runtimeMainActivity();
|
||
var clip = main.getSystemService(Context.CLIPBOARD_SERVICE);
|
||
plus.android.invoke(clip,"setText",text.toString());
|
||
mui.toast("复制成功");
|
||
}
|
||
|
||
function invokeNavi(from, destination) {
|
||
if (0 == arr.length) {
|
||
var startpos= bMapTransQQMap(from[1], from[0])
|
||
var endpos = bMapTransQQMap(destination[1], destination[0])
|
||
var urlStr = encodeURI('http://uri.amap.com/navigation?from='+startpos.lng+','+startpos.lat+',startpoint&to='+endpos.lng+','+endpos.lat+',endpoint&mode=car&policy=1&src=mypage&coordinate=gaode&callnative=0')
|
||
plus.runtime.openURL(urlStr)
|
||
return false
|
||
} else {
|
||
openMapApp(destination)
|
||
}
|
||
}
|
||
|
||
function openMapApp(destination) {
|
||
function realOpen(idx) {
|
||
var shopLat = destination[0];
|
||
var shopLng = destination[1];
|
||
var title = arr[idx].title;
|
||
// var i1 = new Intent();
|
||
switch (title) {
|
||
case "百度地图":
|
||
// if (plus.os.name == "Android") {
|
||
// plus.runtime.openURL(
|
||
// "baidumap://map/direction?origin=latlng:39.98871,116.43234|name:我的位置&destination=31.236244,121.480239&mode=driving&src=webapp.navi.hanguosoft.yinyijianghu",
|
||
// function(error) {
|
||
// mui.alert('打开' + title + '失败');
|
||
// });
|
||
// }
|
||
goMaps(
|
||
"baidumap://map/direction?origin=我的位置&destination="+shopLat+","+shopLng+"&mode=driving&src=cn.com.zgqlg.app"
|
||
)
|
||
|
||
break;
|
||
case "高德地图":
|
||
|
||
var endpos = bMapTransQQMap(shopLng, shopLat)
|
||
// plus.runtime.openURL('androidamap://navi?sourceApplication=nyx_super&lat=' + endpos.lat + '&lon=' + endpos.lng +
|
||
// '&mode=driving®ion=www&output=html&src="全亮共"',
|
||
// function(e) {
|
||
// mui.alert('打开' + title + '失败');
|
||
// })
|
||
goMaps('androidamap://navi?sourceApplication=nyx_super&lat=' + endpos.lat + '&lon=' + endpos.lng +
|
||
'&mode=driving&output=html&src="全亮共"')
|
||
|
||
break;
|
||
}
|
||
}
|
||
|
||
//底部弹出选择地图软件
|
||
if (arr.length === 1) {
|
||
realOpen(0)
|
||
}else{
|
||
plus.nativeUI.actionSheet({
|
||
title: "请选择导航使用的地图",
|
||
cancel: "取消",
|
||
buttons: arr
|
||
}, function(e) {
|
||
realOpen(e.index - 1)
|
||
})
|
||
}
|
||
}
|
||
|
||
function goMaps(url) {
|
||
var mContext = plus.android.runtimeMainActivity();
|
||
var Uri = plus.android.importClass('android.net.Uri');
|
||
var Intent = plus.android.importClass('android.content.Intent');
|
||
var intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
|
||
mContext.startActivity(intent);
|
||
}
|
||
|
||
const waiting = plus.nativeUI.showWaiting("正在加载")
|
||
|
||
const app = new Vue({
|
||
el: '#app',
|
||
data() {
|
||
return {
|
||
orderList: [
|
||
],
|
||
location: [0,0],
|
||
highlightText: "",
|
||
currentPage: 1,
|
||
isLoading: false,
|
||
}
|
||
},
|
||
methods: {
|
||
getDistance(from, to) {
|
||
var radLat1 = from[0]*Math.PI / 180.0;
|
||
var radLat2 = to[0]*Math.PI / 180.0;
|
||
var a = radLat1 - radLat2;
|
||
var b = from[0]*Math.PI / 180.0 - to[0]*Math.PI / 180.0;
|
||
var s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a/2),2) +
|
||
Math.cos(radLat1)*Math.cos(radLat2)*Math.pow(Math.sin(b/2),2)));
|
||
s = s *6378.137 ;// EARTH_RADIUS;
|
||
if (s < 1.5) {
|
||
return `${(s * 1000).toFixed(2)}m`;
|
||
}
|
||
if (s > 50) {
|
||
return `>50km`;
|
||
}
|
||
return `${s.toFixed(2)}km`;
|
||
},
|
||
loadNextPage() {
|
||
if (this.isLoading) return;
|
||
this.isLoading = true;
|
||
$.ajax({
|
||
url: qlgUrl("app/orders/shundaiList"),
|
||
method: "GET",
|
||
data: {
|
||
page: this.currentPage+1,
|
||
},
|
||
dataType: 'json',
|
||
success: (res) => {
|
||
this.isLoading = false;
|
||
if(res.status == 1){
|
||
this.currentPage += 1;
|
||
$.each(res.data, (k, i)=>{
|
||
this.orderList.push(i)
|
||
});
|
||
}else{
|
||
mui.alert(res.msg);
|
||
}
|
||
},
|
||
error: function(err){
|
||
mui.alert("请求失败");
|
||
this.isLoading = false;
|
||
}
|
||
});
|
||
},
|
||
copyText() {
|
||
copyToClip(this.highlightText)
|
||
},
|
||
dismissHighLight() {
|
||
this.highlightText = "";
|
||
},
|
||
setHighLightText(text){
|
||
this.highlightText = text;
|
||
},
|
||
navi(destination) {
|
||
invokeNavi(this.location, destination);
|
||
},
|
||
loadData() {
|
||
$.ajax({
|
||
url: qlgUrl("app/orders/shundaiList"),
|
||
method: "GET",
|
||
data: {
|
||
page: this.currentPage,
|
||
},
|
||
dataType: 'json',
|
||
success: (res) => {
|
||
waiting.close();
|
||
if(res.status == 1){
|
||
this.orderList = res.data;
|
||
}else{
|
||
mui.alert(res.msg);
|
||
}
|
||
},
|
||
error: function(err){
|
||
waiting.close();
|
||
mui.alert("请求失败");
|
||
self.back();
|
||
}
|
||
});
|
||
},
|
||
},
|
||
created() {
|
||
plus.geolocation.getCurrentPosition((p) => {
|
||
console.log(p.coords.latitude);
|
||
console.log(p.coords.longitude);
|
||
this.location=[p.coords.latitude, p.coords.longitude];
|
||
this.loadData();
|
||
},function (err) {
|
||
mui.alert('获取当前位置失败')
|
||
waiting.close();
|
||
})
|
||
},
|
||
}) |