2

我试图用来MQA.TileMap.zoomToRect设置给定边界框的视口。

var cust;
var rect = new MQA.RectLL();
for (var i = 0, len = custs.length; i < len; i++) {
    cust = custs[i];
    poi = new MQA.Poi({lat:cust.lat, lng:cust.lng});
    map.addShape(poi); // This works
    rect.extend(poi.latLng); // Does nothing to `rect'.
}
map.zoomToRect(rect, false); // This fails

看起来rect值仍然与0,0lr属性ul相同。该调用会在 firebog 中产生以下输出

"NetworkError: 500 Internal Server Error - http://coverage.mqcdn.com/coverage?format=json&jsonp=MQA._covCallback&loc=NaN,NaN,NaN,NaN&zoom=2&projection=sm&cat=map%2Chyb%2Csat"

编辑:我在示例中添加了注释,添加形状可以正常工作,所以 poi 对象很好,检查poi.latLng也很好。

4

2 回答 2

1

如果你把 POI 放在一个集合中,你可以使用 collectionsgetBoundingRect方法

例子:

var collection = new MQA.ShapeCollection();
collection.add( new MQA.Poi( { lat: 0, lng: 0 } ) ); 
collection.add( new MQA.Poi( { lat: 100, lng: 100 } ) );

map.zoomToRect( collection.getBoundingRect() );

编辑 不会工作

<script
src="http://www.mapquestapi.com/sdk/js/v7.2.s/mqa.toolkit.js?key=<YOURKEY>"></script>
于 2014-10-09T19:27:00.333 回答
-1

基于快速浏览,您确定您正在检索“for”循环中的纬度/经度值吗?firebug 中显示的 500 错误具有“..&loc=NaN,NaN,NaN,NaN&...”,因此您似乎没有成功从数组中检索纬度/经度值,而是检索对象。

如果您可以共享更多代码,我可以尝试整理一个示例。或者甚至向我展示你的“custs”数组的结构。您可能需要执行以下操作:

poi = new MQA.Poi({lat:custs.cust[i].lat, lng:custs.cust[i].lng});

但同样,这取决于您的阵列的外观。您只需要确保循环遍历数组中的所有单个项目并从数组中的每个项目中检索纬度/经度值。

此外,MapQuest有一个开发者网络(如果您使用 API,我相信您已经看到了!),还有一个论坛,您可以在其中发布代码示例并寻求帮助。MapQuest 员工确实参加了论坛,如果您遇到麻烦,他们也可能会提供帮助。

希望这可以帮助!

于 2012-01-11T17:11:57.903 回答