谷歌地图Javascript API V3 - 标记在瓷砖边框切割

时间:2013-03-13 09:38:34

标签: android cordova google-maps-api-3 google-maps-markers

我正在开发一款基于地理定位的游戏。带有标记的地图是其核心组成部分之一。我们正在使用

  • Phonegap 2.2
  • 此问题仅发生在Android 4.2.x上(在Nexus 4,7和10上测试)
  • GoogleMaps Api V3
  • 我们正在使用PhonegapBuild构建它
  • MarkerImages与缩放图像一起使用(参见下面的代码)

不幸的是,我在地图上正确显示标记时遇到了一些问题。看起来瓷砖周围有一个小边框,标记在这个边框处被切割。 问题不会始终发生。

放大地图后,标记会正确显示。

下面的代码显示了我们添加标记和定义地图的方式。

map = new google.maps.Map(document.getElementById('map'), {
            zoom : 14,
            mapTypeControl : false,
            center : new google.maps.LatLng(lastPos.lat, lastPos.lon),
            mapTypeId : google.maps.MapTypeId.ROADMAP,
            streetViewControl : false,
            styles : [..]
        });

[some time later, after making sure map is initialized, is displayed and so on...]

var markerimage = {
    url : image,
    size : new google.maps.Size(60, 106),
    origin : new google.maps.Point(0, 0),
    anchor : new google.maps.Point(15, 53),
    scaledSize : new google.maps.Size(30, 53)
};
var marker = new google.maps.Marker({
    position : new google.maps.LatLng(spot.position.latitude, spot.position.longitude),
    icon : markerimage,
    optimized : true,
    clickable : true,
    draggable : false,
    map : map,
    zIndex: 2
});

是否有人对此问题或如何解决此问题有所了解?

谢谢!

编辑:

我刚试了几件事。我在应用程序中禁用了所有CSS,并且所有不需要Javascript,我从标记和地图中删除了自定义样式。但Bug仍然会发生。现在,地图大小设置为固定宽度和高度(以像素为单位)。我真的对这个bug感到疯狂!标记复制,拉伸和切割......! 我在下面附上了一个新的scrennshot。

new screenshot

map with border between tiles and cutted markers

1 个答案:

答案 0 :(得分:0)

这很难调试,因为它难以重现 - 但我会尝试提供一些提示来尝试作为答案:

  • 带图像的标记(png,gif)转optimized: false,如果这不帮助尝试删除markerImages,看看会发生什么。还有错误吗?

  • 从地图中删除自定义样式(尝试不使用自定义样式和标记图像,不使用自定义样式,但使用标记图像等。)

  • 尝试侦听tilesloaded,bounds_changed等事件,并使用调试打印来检查它们是否被触发。当他们这样做时:尝试在那之后初始化你的标记 - 第一次直接 - 然后用小暂停

  • 尝试删除图像缩放和特殊锚设置等,尽可能减少

  • 例如,确保通过将它们附加到DOM来加载markerImage。 (这是网络图像的正常和良好做法 - 我不知道phonegap是否有不同的东西)。

如果似乎没有任何帮助 - 请来自gooooogle:)