2

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

  • 电话间隙 2.2
  • 该问题仅出现在 Android 4.2.x 上(在 Nexus 4、7 和 10 上测试)
  • 谷歌地图 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还是出现了。地图大小现在设置为固定宽度和高度(按像素)。我真的被这个错误抓狂了!标记重复,被拉伸并被切割......!我在下面附上了一个新的截图。

新截图

地图与瓷砖和切割标记之间的边界.

4

1 回答 1

0

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

  • 带有图像(png,gif)的标记转optimized: false,如果这无助于尝试删除 markerImages 并看看会发生什么。还是bug?

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

  • 尝试监听 tilesloaded、bounds_changed 等事件并使用调试打印来检查它们是否被触发。当他们这样做时:尝试在此之后初始化您的标记 - 首先是直接 - 然后有小的超时

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

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

如果似乎没有任何帮助 - 向 gooooogle 提问 :)

于 2013-03-13T17:11:40.377 回答