Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
DCloud
uni-app
提交
e4c82770
U
uni-app
项目概览
DCloud
/
uni-app
28 天 前同步成功
通知
702
Star
38704
Fork
3642
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
7
列表
看板
标记
里程碑
合并请求
1
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
U
uni-app
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
7
Issue
7
列表
看板
标记
里程碑
合并请求
1
合并请求
1
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
e4c82770
编写于
8月 11, 2022
作者:
DCloud-WZF
💬
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix(map): 修复高德地图h5PC端覆盖物点击触发map点击问题
上级
cc623a38
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
59 addition
and
34 deletion
+59
-34
src/platforms/h5/view/components/map/map-marker.js
src/platforms/h5/view/components/map/map-marker.js
+48
-31
src/platforms/h5/view/components/map/maps/callout.js
src/platforms/h5/view/components/map/maps/callout.js
+11
-3
未找到文件。
src/platforms/h5/view/components/map/map-marker.js
浏览文件 @
e4c82770
...
...
@@ -96,17 +96,18 @@ export default {
})
this
.
$parent
.
_markers
[
this
.
idString
]
=
marker
this
.
updateMarker
(
props
)
maps
.
event
.
addListener
(
marker
,
'
click
'
,
(
e
)
=>
{
const
callout
=
marker
.
callout
if
(
callout
&&
!
callout
.
alwaysVisible
)
{
if
(
IS_AMAP
)
{
callout
.
visible
=
!
callout
.
visible
if
(
callout
.
visible
)
{
marker
.
callout
.
createAMapText
()
}
else
{
marker
.
callout
.
removeAMapText
()
}
}
else
{
if
(
IS_AMAP
)
{
// 不通过 addListener 方式绑定事件,为了规避高德地图覆盖物点击触发map点击问题
marker
.
dom
.
addEventListener
(
'
click
'
,
e
=>
{
this
.
handleAMapMarkerClick
(
e
,
marker
)
})
marker
.
dom
.
addEventListener
(
'
touchend
'
,
e
=>
{
this
.
handleAMapMarkerClick
(
e
,
marker
)
})
}
else
{
maps
.
event
.
addListener
(
marker
,
'
click
'
,
(
e
)
=>
{
const
callout
=
marker
.
callout
if
(
callout
&&
!
callout
.
alwaysVisible
)
{
callout
.
set
(
'
visible
'
,
!
callout
.
visible
)
if
(
callout
.
visible
)
{
const
div
=
callout
.
div
...
...
@@ -115,29 +116,26 @@ export default {
parent
.
appendChild
(
div
)
}
}
}
const
event
=
e
.
event
||
e
.
domEvent
||
e
.
origin
Event
const
event
=
e
.
event
||
e
.
dom
Event
if
(
this
.
idString
)
{
const
{
latitude
,
longitude
}
=
this
.
getMarkerLatitudeLongitude
(
e
)
this
.
$parent
.
$trigger
(
'
markertap
'
,
event
,
{
markerId
:
Number
(
this
.
idString
),
latitude
,
longitude
})
}
// 避开高德地图bug: pc端 stopPropagation 无效且地图随鼠标移动
if
(
event
!==
e
.
originEvent
)
{
if
(
this
.
idString
)
{
const
{
latitude
,
longitude
}
=
this
.
getMarkerLatitudeLongitude
(
e
)
this
.
$parent
.
$trigger
(
'
markertap
'
,
event
,
{
markerId
:
Number
(
this
.
idString
),
latitude
,
longitude
})
}
event
.
stopPropagation
()
}
})
// 处理 google H5移动端 maker 点击触发 map 点击问题
maps
.
event
.
addListener
(
marker
,
'
mousedown
'
,
(
e
)
=>
{
if
(
e
.
domEvent
)
{
e
.
domEvent
.
stopPropagation
()
}
}
)
}
)
// 处理 google H5移动端 maker 点击触发 map 点击问题
maps
.
event
.
addListener
(
marker
,
'
mousedown
'
,
(
e
)
=>
{
if
(
e
.
domEvent
)
{
e
.
domEvent
.
stopPropagation
()
}
}
)
}
},
updateMarker
(
option
)
{
const
map
=
this
.
_map
...
...
@@ -318,6 +316,25 @@ export default {
console
.
error
(
'
Marker.iconPath is required.
'
)
}
},
handleAMapMarkerClick
(
e
,
marker
)
{
const
callout
=
marker
.
callout
if
(
callout
&&
!
callout
.
alwaysVisible
)
{
callout
.
visible
=
!
callout
.
visible
if
(
callout
.
visible
)
{
marker
.
callout
.
createAMapText
()
}
else
{
marker
.
callout
.
removeAMapText
()
}
}
if
(
this
.
idString
)
{
this
.
$parent
.
$trigger
(
'
markertap
'
,
e
,
{
markerId
:
Number
(
this
.
idString
),
latitude
:
marker
.
_position
.
lat
,
longitude
:
marker
.
_position
.
lng
})
}
e
.
stopPropagation
()
},
updateMarkerLabelStyle
(
id
,
style
)
{
const
className
=
'
uni-map-marker-label-
'
+
id
let
styleEl
=
document
.
getElementById
(
className
)
...
...
src/platforms/h5/view/components/map/maps/callout.js
浏览文件 @
e4c82770
...
...
@@ -32,14 +32,22 @@ export function createCallout (maps) {
},
position
:
option
.
position
})
maps
.
event
.
addListener
(
this
.
Text
,
'
click
'
,
({
originEvent
})
=>
{
this
.
callback
(
originEvent
,
this
.
parent
)
// 不通过 addListener 方式绑定事件,为了规避高德地图覆盖物点击触发map点击问题
this
.
Text
.
dom
.
addEventListener
(
'
click
'
,
e
=>
{
handleAMapTextClick
(
this
,
e
)
})
this
.
Text
.
dom
.
addEventListener
(
'
touchend
'
,
e
=>
{
handleAMapTextClick
(
this
,
e
)
})
this
.
Text
.
setMap
(
option
.
map
)
}
function
handleAMapTextClick
(
self
,
e
)
{
self
.
callback
(
e
,
self
.
parent
)
e
.
stopPropagation
()
}
function
removeAMapText
()
{
if
(
this
.
Text
)
{
this
.
option
.
map
.
remove
(
this
.
Text
)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录