刘翔宇-旅管家 4 years ago
parent aff53b1526
commit b076a2e683

@ -28,5 +28,8 @@ Vue.use(uView);
import util from "@/utils/util"; import util from "@/utils/util";
Vue.prototype.util = util; Vue.prototype.util = util;
import gcoord from "@/utils/gcoord.js";
Vue.prototype.gcoord = gcoord;
import {VueJsonp} from 'vue-jsonp' //中间有忘记大括号出现install undefind问题 import {VueJsonp} from 'vue-jsonp' //中间有忘记大括号出现install undefind问题
Vue.use(VueJsonp) Vue.use(VueJsonp)

@ -145,7 +145,7 @@
this.$refs.uForm.setRules(this.rules); this.$refs.uForm.setRules(this.rules);
let that = this; let that = this;
uni.getLocation({ uni.getLocation({
type: "gcj02", type: "wgs84",
geocode: true, geocode: true,
success(res) { success(res) {
@ -164,9 +164,13 @@
longitude = res.longitude; longitude = res.longitude;
} }
let _latlog = that.gcoord.transformFromWGSToGCJ(latitude, longitude);
const url = const url =
"https://apis.map.qq.com/ws/geocoder/v1/?key=EUQBZ-MJALU-WZFVR-2HFNW-TIK2K-TNBJI&location=" + "https://apis.map.qq.com/ws/geocoder/v1/?key=EUQBZ-MJALU-WZFVR-2HFNW-TIK2K-TNBJI&location=" +
latitude + "," + longitude + "&output=jsonp" _latlog.latitude + "," + _latlog.longitude + "&output=jsonp"
that.$jsonp( that.$jsonp(
url url
).then(re => { ).then(re => {

@ -112,7 +112,7 @@
this.$refs.uForm.setRules(this.rules); this.$refs.uForm.setRules(this.rules);
let that = this; let that = this;
uni.getLocation({ uni.getLocation({
type: "gcj02", type: "wgs84",
success(res) { success(res) {
that.location = res; that.location = res;
var loc = null var loc = null
@ -127,9 +127,12 @@
that.form.latitude = res.latitude; that.form.latitude = res.latitude;
that.form.longitude = res.longitude; that.form.longitude = res.longitude;
} }
let _latlog= that.gcoord.transformFromWGSToGCJ(that.form.latitude,that.form.longitude);
const url = const url =
"https://apis.map.qq.com/ws/geocoder/v1/?key=EUQBZ-MJALU-WZFVR-2HFNW-TIK2K-TNBJI&location=" + "https://apis.map.qq.com/ws/geocoder/v1/?key=EUQBZ-MJALU-WZFVR-2HFNW-TIK2K-TNBJI&location=" +
that.form.latitude + "," + that.form.longitude + "&output=jsonp" _latlog.latitude + "," + _latlog.longitude + "&output=jsonp"
that.$jsonp( that.$jsonp(
url url

@ -129,7 +129,7 @@
this.$refs.uForm.setRules(this.rules); this.$refs.uForm.setRules(this.rules);
let that = this; let that = this;
uni.getLocation({ uni.getLocation({
type: "gcj02", type: "wgs84",
geocode: true, geocode: true,
success(res) { success(res) {
var loc = null var loc = null
@ -144,9 +144,12 @@
that.form.deal_latitude = res.latitude; that.form.deal_latitude = res.latitude;
that.form.deal_longitude = res.longitude; that.form.deal_longitude = res.longitude;
} }
let _latlog= that.gcoord.transformFromWGSToGCJ(that.form.latitude,that.form.longitude);
const url = const url =
"https://apis.map.qq.com/ws/geocoder/v1/?key=EUQBZ-MJALU-WZFVR-2HFNW-TIK2K-TNBJI&location=" + "https://apis.map.qq.com/ws/geocoder/v1/?key=EUQBZ-MJALU-WZFVR-2HFNW-TIK2K-TNBJI&location=" +
that.form.deal_latitude + "," + that.form.deal_longitude + "&output=jsonp" _latlog.latitude + "," + _latlog.longitude + "&output=jsonp"
that.$jsonp( that.$jsonp(
@ -346,9 +349,11 @@
chooseLocation(e) { //打开地图选择位置 chooseLocation(e) { //打开地图选择位置
var that = this; var that = this;
let _latlog= that.gcoord.transformFromWGSToGCJ(that.form.deal_latitude,that.form.deal_longitude);
uni.chooseLocation({ uni.chooseLocation({
longitude: that.form.deal_longitude, longitude: _latlog.longitude,
latitude: that.form.deal_latitude, latitude: _latlog.latitude,
success: res => { success: res => {
that.form.address = res.name; that.form.address = res.name;
that.form.deal_longitude = res.longitude; that.form.deal_longitude = res.longitude;

@ -16,6 +16,7 @@
{{typeName}} {{typeName}}
</view> </view>
</u-form-item> </u-form-item>
<block v-if='formshow'> <block v-if='formshow'>
<u-form-item label="巡查内容" label-position="top" prop="type" required> <u-form-item label="巡查内容" label-position="top" prop="type" required>
<u-input placeholder="请选择巡查内容" v-model="askName" type="select" :border="true" <u-input placeholder="请选择巡查内容" v-model="askName" type="select" :border="true"
@ -25,10 +26,10 @@
:list="rainArr.askContentList" @confirm="confirmAskType"></u-select> :list="rainArr.askContentList" @confirm="confirmAskType"></u-select>
</u-form-item> </u-form-item>
<u-form-item labelWidth="180" prop="scope" label="覆盖范围(米)" label-position="left" required> <u-form-item labelWidth="180" prop="scope" label="覆盖范围(米)" label-position="left" required>
<u-input type="number" v-model="form.scope" placeholder="请填写覆盖范围"/> <u-input type="number" v-model="form.scope" placeholder="请填写覆盖范围" />
</u-form-item> </u-form-item>
<u-form-item labelWidth="180" prop="point_name" label="点位名称" label-position="left" required> <u-form-item labelWidth="180" prop="point_name" label="点位名称" label-position="left" required>
<u-input v-model="form.point_name" type='text' placeholder="请填写点位名称"/> <u-input v-model="form.point_name" type='text' placeholder="请填写点位名称" />
</u-form-item> </u-form-item>
</block> </block>
<view v-if="!formshow"> <view v-if="!formshow">
@ -87,7 +88,8 @@
<view v-if="!formshow"> <view v-if="!formshow">
<u-form-item labelWidth="180" label-position="left" label="是否违法"> <u-form-item labelWidth="180" label-position="left" label="是否违法">
<u-radio-group v-model="form.is_law"> <u-radio-group v-model="form.is_law">
<u-radio @change="lawRadioChange" v-for="(item, index) in rainArr.laws" :key="index" :name="item.id"> <u-radio @change="lawRadioChange" v-for="(item, index) in rainArr.laws" :key="index"
:name="item.id">
{{item.name}} {{item.name}}
</u-radio> </u-radio>
</u-radio-group> </u-radio-group>
@ -143,6 +145,7 @@
export default { export default {
data() { data() {
return { return {
location: "",
otherData: { otherData: {
token: "" token: ""
}, },
@ -230,8 +233,8 @@
road_id: '', road_id: '',
content: "", content: "",
ask_content_id: "", ask_content_id: "",
scope:"", scope: "",
point_name:"", point_name: "",
is_unusual: 0, is_unusual: 0,
is_scene: 0, is_scene: 0,
result: "", result: "",
@ -249,7 +252,7 @@
remark: "", remark: "",
is_law: "", is_law: "",
break_id: "", break_id: "",
mobile_worksheet_id:"" mobile_worksheet_id: ""
}, },
rules: { rules: {
scope: [{ scope: [{
@ -300,7 +303,7 @@
this.form.road_id = options.roadid this.form.road_id = options.roadid
this.roadName = options.roadname this.roadName = options.roadname
} }
if(options.orderId){ if (options.orderId) {
this.form.mobile_worksheet_id = options.orderId this.form.mobile_worksheet_id = options.orderId
} }
console.log(this.form.mobile_worksheet_id) console.log(this.form.mobile_worksheet_id)
@ -311,7 +314,7 @@
this.$refs.uForm.setRules(this.rules); this.$refs.uForm.setRules(this.rules);
let that = this; let that = this;
uni.getLocation({ uni.getLocation({
type: "gcj02", type: "wgs84",
geocode: true, geocode: true,
success(res) { success(res) {
var loc = null var loc = null
@ -326,9 +329,13 @@
that.form.latitude = res.latitude; that.form.latitude = res.latitude;
that.form.longitude = res.longitude; that.form.longitude = res.longitude;
} }
let _latlog= that.gcoord.transformFromWGSToGCJ(that.form.latitude,that.form.longitude);
const url = const url =
"https://apis.map.qq.com/ws/geocoder/v1/?key=EUQBZ-MJALU-WZFVR-2HFNW-TIK2K-TNBJI&location=" + "https://apis.map.qq.com/ws/geocoder/v1/?key=EUQBZ-MJALU-WZFVR-2HFNW-TIK2K-TNBJI&location=" +
that.form.latitude + "," + that.form.longitude + "&output=jsonp" _latlog.latitude + "," + _latlog.longitude + "&output=jsonp"
that.$jsonp( that.$jsonp(
url url
).then(re => { ).then(re => {
@ -356,10 +363,10 @@
// } // }
}, },
lawRadioChange(val){ lawRadioChange(val) {
console.log(val) console.log(val)
if(val==0){ if (val == 0) {
this.form.break_id="" this.form.break_id = ""
this.lawName = "" this.lawName = ""
} }
}, },
@ -374,7 +381,7 @@
console.log(val) console.log(val)
if (!val[0].value) { if (!val[0].value) {
this.$refs.uForm.resetFields(); this.$refs.uForm.resetFields();
that.buildtypeName="" that.buildtypeName = ""
that.form.name = that.buildName that.form.name = that.buildName
let timeNumber = new Date().getTime() let timeNumber = new Date().getTime()
that.form.number = timeNumber that.form.number = timeNumber
@ -434,9 +441,13 @@
}, },
chooseLocation(e) { //打开地图选择位置 chooseLocation(e) { //打开地图选择位置
var that = this; var that = this;
let _latlog= that.gcoord.transformFromWGSToGCJ(that.form.latitude,that.form.longitude);
uni.chooseLocation({ uni.chooseLocation({
longitude: that.form.longitude, longitude: _latlog.longitude,
latitude: that.form.latitude, latitude: _latlog.latitude,
success: res => { success: res => {
that.form.address = res.name; that.form.address = res.name;
that.form.longitude = res.longitude; that.form.longitude = res.longitude;

@ -251,7 +251,7 @@
this.$refs.uForm.setRules(this.rules); this.$refs.uForm.setRules(this.rules);
let that = this; let that = this;
uni.getLocation({ uni.getLocation({
type: "gcj02", type: "wgs84",
geocode: true, geocode: true,
success(res) { success(res) {
var loc = null var loc = null
@ -266,9 +266,13 @@
that.form.latitude = res.latitude; that.form.latitude = res.latitude;
that.form.longitude = res.longitude; that.form.longitude = res.longitude;
} }
let _latlog= that.gcoord.transformFromWGSToGCJ(that.form.latitude,that.form.longitude);
const url = const url =
"https://apis.map.qq.com/ws/geocoder/v1/?key=EUQBZ-MJALU-WZFVR-2HFNW-TIK2K-TNBJI&location=" + "https://apis.map.qq.com/ws/geocoder/v1/?key=EUQBZ-MJALU-WZFVR-2HFNW-TIK2K-TNBJI&location=" +
that.form.latitude + "," + that.form.longitude + "&output=jsonp" _latlog.latitude + "," + _latlog.longitude + "&output=jsonp"
that.$jsonp( that.$jsonp(
url url
).then(re => { ).then(re => {
@ -347,9 +351,10 @@
}, },
chooseLocation(e) { //打开地图选择位置 chooseLocation(e) { //打开地图选择位置
var that = this; var that = this;
let _latlog= that.gcoord.transformFromWGSToGCJ(that.form.latitude,that.form.longitude);
uni.chooseLocation({ uni.chooseLocation({
longitude: that.form.longitude, longitude:_latlog.longitude,
latitude: that.form.latitude, latitude: _latlog.latitude,
success: res => { success: res => {
that.form.address = res.name; that.form.address = res.name;
that.form.longitude = res.longitude; that.form.longitude = res.longitude;

@ -80,7 +80,7 @@
that.totype = options.type; that.totype = options.type;
that.orderId = options.orderId?options.orderId:"" that.orderId = options.orderId?options.orderId:""
uni.getLocation({ uni.getLocation({
type: "gcj02", type: "wgs84",
geocode: true, geocode: true,
success(res) { success(res) {
var loc = null var loc = null

@ -0,0 +1,167 @@
/**
* 判断经纬度是否超出中国境内
*/
function isLocationOutOfChina(latitude, longitude) {
if (longitude < 72.004 || longitude > 137.8347 || latitude < 0.8293 || latitude > 55.8271)
return true;
return false;
}
/**
* 将WGS-84(国际标准)转为GCJ-02(火星坐标):
*/
function transformFromWGSToGCJ(latitude, longitude) {
var lat = "";
var lon = "";
var ee = 0.00669342162296594323;
var a = 6378245.0;
var pi = 3.14159265358979324;
if (isLocationOutOfChina(latitude, longitude)) {
lat = latitude;
lon = longitude;
} else {
var adjustLat = transformLatWithXY(longitude - 105.0, latitude - 35.0);
var adjustLon = transformLonWithXY(longitude - 105.0, latitude - 35.0);
var radLat = latitude / 180.0 * pi;
var magic = Math.sin(radLat);
magic = 1 - ee * magic * magic;
var sqrtMagic = Math.sqrt(magic);
adjustLat = (adjustLat * 180.0) / ((a * (1 - ee)) / (magic * sqrtMagic) * pi);
adjustLon = (adjustLon * 180.0) / (a / sqrtMagic * Math.cos(radLat) * pi);
latitude = latitude + adjustLat;
longitude = longitude + adjustLon;
}
return {
latitude: latitude,
longitude: longitude
};
}
/**
* 将GCJ-02(火星坐标)转为百度坐标:
*/
function transformFromGCJToBaidu(latitude, longitude) {
var pi = 3.14159265358979324 * 3000.0 / 180.0;
var z = Math.sqrt(longitude * longitude + latitude * latitude) + 0.00002 * Math.sin(latitude * pi);
var theta = Math.atan2(latitude, longitude) + 0.000003 * Math.cos(longitude * pi);
var a_latitude = (z * Math.sin(theta) + 0.006);
var a_longitude = (z * Math.cos(theta) + 0.0065);
return {
latitude: a_latitude,
longitude: a_longitude
};
}
/**
* 将百度坐标转为GCJ-02(火星坐标):
*/
function transformFromBaiduToGCJ(latitude, longitude) {
var xPi = 3.14159265358979323846264338327950288 * 3000.0 / 180.0;
var x = longitude - 0.0065;
var y = latitude - 0.006;
var z = Math.sqrt(x * x + y * y) - 0.00002 * Math.sin(y * xPi);
var theta = Math.atan2(y, x) - 0.000003 * Math.cos(x * xPi);
var a_latitude = z * Math.sin(theta);
var a_longitude = z * Math.cos(theta);
return {
latitude: a_latitude,
longitude: a_longitude
};
}
/**
* 将GCJ-02(火星坐标)转为WGS-84:
*/
function transformFromGCJToWGS(latitude, longitude) {
var threshold = 0.00001;
// The boundary
var minLat = latitude - 0.5;
var maxLat = latitude + 0.5;
var minLng = longitude - 0.5;
var maxLng = longitude + 0.5;
var delta = 1;
var maxIteration = 30;
while (true) {
var leftBottom = transformFromWGSToGCJ(minLat, minLng);
var rightBottom = transformFromWGSToGCJ(minLat, maxLng);
var leftUp = transformFromWGSToGCJ(maxLat, minLng);
var midPoint = transformFromWGSToGCJ((minLat + maxLat) / 2, (minLng + maxLng) / 2);
delta = Math.abs(midPoint.latitude - latitude) + Math.abs(midPoint.longitude - longitude);
if (maxIteration-- <= 0 || delta <= threshold) {
return {
latitude: (minLat + maxLat) / 2,
longitude: (minLng + maxLng) / 2
};
}
if (isContains({
latitude: latitude,
longitude: longitude
}, leftBottom, midPoint)) {
maxLat = (minLat + maxLat) / 2;
maxLng = (minLng + maxLng) / 2;
} else if (isContains({
latitude: latitude,
longitude: longitude
}, rightBottom, midPoint)) {
maxLat = (minLat + maxLat) / 2;
minLng = (minLng + maxLng) / 2;
} else if (isContains({
latitude: latitude,
longitude: longitude
}, leftUp, midPoint)) {
minLat = (minLat + maxLat) / 2;
maxLng = (minLng + maxLng) / 2;
} else {
minLat = (minLat + maxLat) / 2;
minLng = (minLng + maxLng) / 2;
}
}
}
function isContains(point, p1, p2) {
return (point.latitude >= Math.min(p1.latitude, p2.latitude) && point.latitude <= Math.max(p1.latitude, p2
.latitude)) && (point.longitude >= Math.min(p1.longitude, p2.longitude) && point.longitude <= Math.max(p1
.longitude, p2.longitude));
}
function transformLatWithXY(x, y) {
var pi = 3.14159265358979324;
var lat = -100.0 + 2.0 * x + 3.0 * y + 0.2 * y * y + 0.1 * x * y + 0.2 * Math.sqrt(Math.abs(x));
lat += (20.0 * Math.sin(6.0 * x * pi) + 20.0 * Math.sin(2.0 * x * pi)) * 2.0 / 3.0;
lat += (20.0 * Math.sin(y * pi) + 40.0 * Math.sin(y / 3.0 * pi)) * 2.0 / 3.0;
lat += (160.0 * Math.sin(y / 12.0 * pi) + 320 * Math.sin(y * pi / 30.0)) * 2.0 / 3.0;
return lat;
}
function transformLonWithXY(x, y) {
var pi = 3.14159265358979324;
var lon = 300.0 + x + 2.0 * y + 0.1 * x * x + 0.1 * x * y + 0.1 * Math.sqrt(Math.abs(x));
lon += (20.0 * Math.sin(6.0 * x * pi) + 20.0 * Math.sin(2.0 * x * pi)) * 2.0 / 3.0;
lon += (20.0 * Math.sin(x * pi) + 40.0 * Math.sin(x / 3.0 * pi)) * 2.0 / 3.0;
lon += (150.0 * Math.sin(x / 12.0 * pi) + 300.0 * Math.sin(x / 30.0 * pi)) * 2.0 / 3.0;
return lon;
}
module.exports = {
isLocationOutOfChina: isLocationOutOfChina,
transformFromWGSToGCJ: transformFromWGSToGCJ,
transformFromGCJToBaidu: transformFromGCJToBaidu,
transformFromBaiduToGCJ: transformFromBaiduToGCJ,
transformFromGCJToWGS: transformFromGCJToWGS
}
Loading…
Cancel
Save