当前位置: 首页 > 知识库问答 >
问题:

Google Maps API v3:移动设备上不能点击的自定义标记

燕璞
2023-03-14
var marker = new google.maps.Marker(
    var markerOptions = {
        icon : new google.maps.MarkerImage(
            mURL, new google.maps.Size(mWidth,mHeight),
            new google.maps.Point(0,0),new google.maps.Point(anchorX,anchorY)
        ),
        flat: true,
        position: point,
        visible: true,
        title: title,
        zIndex: zIndex,
        map: map,
    }
);

google.maps.event.addListener(marker,'click',function() { ...... });

上面的代码在所有桌面浏览器上都能正常工作,但在所有移动浏览器上都失败了。但是,如果我移除自定义图形(即'icon'属性),它可以正常工作。

有什么想法吗?我在拔头发!

共有1个答案

扶开诚
2023-03-14

找到了!

问题的根本原因是我们的代码将标记大小和锚点属性提供为字符串,而Maps API希望它们是整数。这些值从数据库加载,并从PHP程序提供给Javascript。因此,修复方法是在创建输出为JSON的数组时将PHP值强制转换为(int)

这是一个非常微妙的问题:在桌面浏览器上,Maps API似乎可以很好地处理这些以字符串形式提供的参数。只有在移动浏览器上才会失败。

 类似资料:
  • 我正在使用angularjs谷歌地图,我想自定义风格的信息,这是显示在一个标记点击。ui-gmap-window标记确实有自定义选项,它单独工作也很好。然而,当我试图在标记标记(ui-gmap-markers)中使用它时,它不会在标记点击上显示自定义样式的infoWindow。plunkr清楚地解释了这个问题。

  • 问题内容: 在页面加载时,我有一个调用服务的控制器,然后将返回的数据绑定到某些$ scope.objects: 在我的HTML中,我尝试通过以下方式绑定$ scope.OrderHistory: 在笔记本电脑/台式机上观看时很好,但在平板电脑和移动设备(例如iPhone / iPad)上无法使用 问题答案: 尝试添加ngTouch。从文档: 设计用于触摸屏设备的默认功能的更强大替代品。大多数移动浏

  • 获取设备配置信息 根据业务需求获取设备 配置的各种信息。 参数说明 字段 类型 必须 备注 device RKDevice 是 设备 namespace String 是 存储空间、根据业务填写 key String 是 信息存储Key 示例代码 Swift: RokidMobileSDK.device.getServiceInfo(device: RKDevice, namespace: Str

  • 获取设备配置信息 根据业务需求获取设备 配置的各种信息。 参数说明 字段 类型 必须 备注 deviceId String 是 设备Id namespace String 是 存储空间、根据业务填写 key String 是 信息存储Key 示例代码: Kotlin val deviceId: String = "XXX" val namespace: String = "YYY" val ke

  • 本文向大家介绍vue自定义移动端touch事件之点击、滑动、长按事件,包括了vue自定义移动端touch事件之点击、滑动、长按事件的使用技巧和注意事项,需要的朋友参考一下 用法: js核心内容 2018-03-08 有朋友提出一个bug “v-for循环 生命周期后 获取不到新值 比如更新了数据” 这个问题是v-for的就地复用机制导致的,也就是可以复用的dom没有重复渲染,官方给出的方法是需要为

  • 问题内容: 我正在使用此代码,当我看到我看到自动播放不起作用时。 并且无法在移动设备上正常运行,在网站上也可以正常运行。谁能告诉我这个问题? 谢谢,感激不尽 问题答案: 现在是2020年 请注意(出于以下原因?)Chrome已更改了其自动播放政策,因此您现在必须: 用户与页面进行任何(任何)交互后的音频上下文 或“排名很高”(例如,相信Chrome浏览器默认不会根据用户和世界的行为停止播放音频)