2012-01-11 4 views
0

Я пытаюсь использовать MQA.TileMap.zoomToRect, чтобы установить порт представления заданного ограничивающего прямоугольника.Как правильно масштабировать до границ в MapQuest?

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,0 для обоих lr и 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" 

EDIT: Я добавил примечание к примеру, что добавление формы работает отлично, поэтому объект пои прекрасно, а также проверки poi.latLng прекрасно.

ответ

0

Основываясь на быстром взгляде, вы уверены, что получаете значения lat/long в вашем цикле «for»? Ошибка 500, показанная в firebug, имеет «.. & loc = NaN, NaN, NaN, NaN & ...», поэтому похоже, что вы не успешно извлекаете значения lat/long из массива и вместо этого извлекаете объекты.

Если вы можете поделиться другим кодом, я могу попытаться собрать пример. Или даже покажите мне, как выглядит ваш массив «custs» с точки зрения того, как он структурирован. Вам, вероятно, понадобится сделать что-то вроде этого:

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

Но опять же, это зависит от того, как выглядит ваш массив. Вам просто нужно убедиться, что вы перебираете все отдельные элементы массива и извлекаете значения lat/long из каждого элемента массива.

Кроме того, MapQuest имеет Developer Network (который я уверен, что вы видели, если вы используете API!), И есть forum, где вы можете разместить образцы кода и попросить о помощи. Сотрудники MapQuest участвуют в форуме и могут также помочь, если у вас возникнут проблемы.

Надеюсь, это поможет!

+0

я забыл местный 'присваивание cust' в моем примере. Я должен отметить, что объект POI прекрасен, потому что я получаю объекты POI, отображаемые на карте в правильных местах. –

+1

Я никогда не делал ничего с расширением видового экрана таким образом (как правило, просто использование метода «bestFit» соответствует моим потребностям), но я не уверен, что метод rect.extend примет объект POI в качестве входа. Похоже, что он ищет объект lat/long (MQA.LatLon), по крайней мере, согласно справочному руководству API. Возможно, я ошибаюсь - я все еще учился. – jharahush

+0

Да, он принимает 'MQA.LatLng', поэтому я передаю ему свойство' MQA.Poi.latLng'. –

2

Если вы положили POI в коллекцию, вы можете использовать коллекции getBoundingRect method.

Пример:

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()); 
Смежные вопросы