提交 07eb495f 编写于 作者: Q qiang

fix: 解决iOS微信内置浏览器打开位置相关页面后无法后退的问题 fixed #1789

上级 4ab48920
......@@ -3,9 +3,9 @@
<system-header
:confirm="!!data"
@back="_back"
@confirm="_choose"
>
选择位置
@confirm="_choose"
>
选择位置
</system-header>
<div class="map-content">
<iframe
......@@ -13,7 +13,7 @@
allow="geolocation"
seamless
sandbox="allow-scripts allow-same-origin allow-forms"
frameborder="0"
frameborder="0"
/>
</div>
</div>
......@@ -27,15 +27,14 @@ export default {
SystemHeader
},
data () {
const key = __uniConfig.qqMapKey
return {
src: '',
src: `https://apis.map.qq.com/tools/locpicker?search=1&type=1&key=${key}&referer=uniapp`,
data: null
}
},
mounted () {
var key = __uniConfig.qqMapKey
this.src = `https://apis.map.qq.com/tools/locpicker?search=1&type=1&key=${key}&referer=uniapp`
window.addEventListener('message', (event) => {
function handler (event) {
var loc = event.data
if (loc && loc.module === 'locationPicker') {
this.data = {
......@@ -45,12 +44,17 @@ export default {
longitude: loc.latlng.lng
}
}
}, false)
}
this.__messageHandle = handler.bind(this)
window.addEventListener('message', this.__messageHandle, false)
},
beforeDestroy () {
window.removeEventListener('message', this.__messageHandle, false)
},
methods: {
_choose () {
if (this.data) {
UniViewJSBridge.publishHandler('onChooseLocation', this.data)
UniViewJSBridge.publishHandler('onChooseLocation', Object.assign({}, this.data))
getApp().$router.back()
}
},
......
<template>
<div class="uni-system-open-location">
<system-header @back="_back">
位置
<system-header @back="_back">
位置
</system-header>
<div class="map-content">
<iframe
......@@ -10,13 +10,13 @@
allow="geolocation"
sandbox="allow-scripts allow-same-origin allow-forms allow-top-navigation allow-modals allow-popups"
frameborder="0"
@load="_load"
@load="_load"
/>
<!-- 去这里 -->
<div
v-if="isPoimarkerSrc"
class="actTonav"
@click="_nav"
@click="_nav"
/>
</div>
</div>
......@@ -47,16 +47,10 @@ export default {
scale,
name,
address,
src: '',
src: latitude && longitude ? `${poimarkerSrc}?type=0&marker=coord:${latitude},${longitude};title:${name};addr:${address};&key=${key}&referer=${referer}` : '',
isPoimarkerSrc: false
}
},
mounted () {
if (this.latitude && this.longitude) {
this.src =
`${poimarkerSrc}?type=0&marker=coord:${this.latitude},${this.longitude};title:${this.name};addr:${this.address};&key=${key}&referer=${referer}`
}
},
methods: {
_back () {
if (this.$refs.map.src.indexOf(poimarkerSrc) !== 0) {
......@@ -73,7 +67,7 @@ export default {
}
},
_nav () {
var url =
var url =
`https://map.qq.com/nav/drive#routes/page?transport=2&epointy=${this.latitude}&epointx=${this.longitude}&eword=${encodeURIComponent(this.name || '目的地')}&referer=${referer}`
this.$refs.map.src = url
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册