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

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

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