js/pages/system/openlocation.vue
<template>
<div>
<w-map :latitude="lnglat.latitude" :longitude="lnglat.longitude"
style="position: fixed;left: 0;right: 0;top: 0;bottom: 0" v-if="show"></w-map>
<div style="width:200px;height:174px;position: fixed;right:0;bottom: 0;background-color: transparent;" @click="toMap">
<text style="font-size: 50px;text-align: right"></text>
</div>
</div>
</template>
<script>
import wx from './../common/wx.js';
import wmap from "./../common/components/api-map";
export default {
components: {
"w-map": wmap,
},
data: function () {
return {
lnglat: {},
point: {
pos: [],
title: 'this is a marker',
},
show: false,
};
},
mixins: [require('./../common/publish').publish],
methods: {
getAddress(lng, lat, callback) {
wx.getAppConfig(function (config) {
var key = config.tmap;
var url = "https://apis.map.qq.com/ws/geocoder/v1/?location=" + lat + "," + lng + "&key=" + key;
wx.request({
url: url,
success: function (res) {
var data = res.data;
var address = data.result.address_component.district + data.result.address_component.street;
callback(address);
//wx.alert(res);
}
})
});
},
toMap(){
var that = this;
that.getAddress(that.lnglat.longitude, that.lnglat.latitude, function (address) {
var siteinfo = weex.requireModule('siteinfo');
var info = {
lng: that.lnglat.longitude,
lat: that.lnglat.latitude,
start: "我的位置",
end: address,
};
var result = siteinfo.openMap(info);
if (result != "ok") {
if (result == "NO_INSTALL_APP") {
wx.alert("请先安装高德地图");
} else {
wx.alert(result);
}
}
});
}
},
created: function () {
this.data = this.$data;
var params = this.getRouterParams();
this.lnglat = params;
this.point.pos = this.lnglat;
this.show = true;
},
mounted: function () {
/* var that = this;
var navigator = weex.requireModule('bmNavigator')
navigator.setRightItem({
text: '导航',
}, function () {
});*/
},
};
</script>
<style scoped>
.container {
flex: 1;
min-height: 600px;
background-color: #eee;
}
.map {
flex: 1;
min-height: 600px;
}
</style>
com/benmu/pluginsimple/ErosPluginSimple.java
@JSMethod(uiThread = false)
public String getMapList() {
String result = "";
if(isInstallPackage("com.autonavi.minimap")){
result = result + "daoge";
}
if(isInstallPackage("com.tencent.map")){
if(result.equals("")){
result = "tencent";
}else{
result = result + ",tencent";
}
}
return result;
}
@JSMethod(uiThread = false)
public String openMap(String params) {
try {
JSONObject obj = new JSONObject(params);
String map_type = obj.getString("map_type");
if(map_type.equals("daoge")){
if(isInstallPackage("com.autonavi.minimap")){
openGaoDeMap(obj.getDouble("lng"), obj.getDouble("lat"),obj.getString("start"),obj.getString("end"));
return "ok";
}else{
return "NO_INSTALL_APP";
}
}else{
if(isInstallPackage("com.tencent.map")){
openTencentMap(obj.getDouble("lng"), obj.getDouble("lat"),obj.getString("start"),obj.getString("end")
,obj.getString("tencent_key"));
return "ok";
}else{
return "NO_INSTALL_APP";
}
}
} catch (Throwable t) {
return "请求参数出错";
}
}
private boolean isInstallPackage(String packageName) {
return new File("/data/data/" + packageName).exists();
}
private void openGaoDeMap(double lon, double lat, String start, String end) {
try {
//double[] gd_lat_lon = [lat,lon];//bdToGaoDe(lon, lat);
StringBuilder loc = new StringBuilder();
loc.append("androidamap://route/plan?sourceApplication=softname");
loc.append("&sname=");
loc.append(start);
loc.append("&dlat=");
loc.append(lat);
loc.append("&dlon=");
loc.append(lon);
loc.append("&dname=");
loc.append(end);
loc.append("&dev=0&t=0");
Intent intent = Intent.getIntent(loc.toString());
Activity activity = (Activity )mWXSDKInstance.getContext();
activity.startActivity(intent);
} catch (Exception e) {
e.printStackTrace();
}
}
private void openTencentMap(double lon, double lat, String start, String end,String tencent_key) {
try {
//double[] gd_lat_lon = [lat,lon];//bdToGaoDe(lon, lat);
StringBuilder loc = new StringBuilder();
loc.append("qqmap://map/routeplan?type=drive&fromcoord=CurrentLocation");
loc.append("&from=");
loc.append(start);
loc.append("&tocoord=");
loc.append(lat);
loc.append(",");
loc.append(lon);
loc.append("&to=");
loc.append(end);
loc.append("&referer=");
loc.append(tencent_key);
Intent intent = Intent.getIntent(loc.toString());
Activity activity = (Activity )mWXSDKInstance.getContext();
activity.startActivity(intent);
} catch (Exception e) {
e.printStackTrace();
}
}