我的JavaScript代码遍历了一些用户数据,并将每个数据作为标记添加到了容器中。然后,将该容器添加到诺基亚地图中,并使用Display zoomTo缩放到包含所有标记的容器的边界框。
但是,在此之后,地图会自动将其完全缩小。 zoomTo调用是我执行的代码的最后部分,因此似乎正在发生奇怪的事情。
this.finishMapping = function () {
map.objects.add(multiMapContainer);
var markerHopefully = multiMapContainer.objects.get(0);
$.ajax({
dataType: "jsonp",
url: "https://route.api.here.com/routing/7.2/calculateroute.json?app_id=WgevZ2m4AF8WHx1TY6GS&app_code=G11AO2dbvCRTdCjfTf-mUw&waypoint0=geo!" + markerHopefully.coordinate.latitude + "," + markerHopefully.coordinate.longitude + "&waypoint1=geo!" + markerHopefully.coordinate.latitude + "," + markerHopefully.coordinate.longitude + "&mode=fastest;car;",
success: function (data) {
onRouteCalculated(data)
},
jsonp: "jsoncallback"
});
function onRouteCalculated(data) {
if (data.response) {
var position = data.response.route[0].waypoint[0].mappedPosition;
var coordinate = new nokia.maps.map.StandardMarker([position.latitude, position.longitude]);
var tempContainer = new nokia.maps.map.Container();
tempContainer.objects.add(coordinate);
map.zoomTo(multiMapContainer.getBoundingBox().merge(tempContainer.getBoundingBox()), false);
}
}
}
我在Chrome浏览器中对其进行了调试,可以看到zoomTo实际上确实可以缩放到适当的边界框,但是在我点击“继续”按钮后,它立即跳回到了最高缩放级别。
最佳答案
我最近遇到了类似的问题。基本问题是,在映射初始化期间,<DIV>
的包含map
本身已被初始化。我的问题很复杂,因为map.zoomTo()
在地图初始化期间始终无法工作(因为2.5.3地图加载始终是异步的)
问题的症结在于,由于尚未显示zoomTo()
,因此我试图在0x0像素图上使用<DIV>
-因此,我最终得到了zoomLevel
零图。
解决方案是将侦听器添加到地图,如下所示:
map.addListener("displayready", function () {
if(bbox){map.zoomTo(bbox, false);}
});
map.addListener("resize", function () {
if(bbox){map.zoomTo(bbox, false);}
});
并设置
bbox
参数,因为收到每个coordinate
,如下所示:function onCoordinateReceived(coordinate){
if(bbox){
bbox = nokia.maps.geo.BoundingBox.coverAll([
bbox.topLeft, bbox.bottomRight, coordinate]);
} else {
bbox = nokia.maps.geo.BoundingBox.coverAll([coordinate]);
}
map.zoomTo(bbox, false);
}
以便:
如果
map
已经初始化并显示,则zoomTo()
中的onCoordinateReceived()
将触发如果
map
在onCoordinateReceived()
之后完成初始化,则会触发zoomTo()
侦听器中的displayready
。如果
<DIV>
更新最后一次发生,则zoomTo()
侦听器中的resize
将触发,这将从缩小的地图更改为“右”的缩放级别。