Ограничение Bing Maps API v7 по границам

Итак, я пытаюсь использовать модуль поиска API AJAX карт Bing (v7) и заметил, что в интерактивном SDK для него вы можете передать свойство с именем bounds, которое вы задаете ограничивающую рамку для поиска. В примере просто используется текущая ограничивающая рамка карты, поэтому теоретически, если вы увеличиваете масштаб, новый поиск должен просто показывать вам результаты в пределах увеличенной области, верно?

Что ж, вот в чем проблема: добавьте следующий код в конец примера кода в Interactive SDK:

Microsoft.Maps.Events.addHandler(map, 'viewchange', searchRequest);

Это должно делать, так это каждый раз, когда вы перемещаетесь по карте, увеличиваете или уменьшаете масштаб, он должен запускать новый поиск с новой ограничивающей областью карты ... Я говорю это из-за линии, которая выглядит так: bounds: map.getBounds(),. На самом деле происходит то, что он возвращается туда, где он был изначально до масштабирования.

Назовите меня сумасшедшим, но разве свойство bounds полностью игнорируется? Кто-нибудь знает, как ограничить результаты поиска видимой в данный момент областью карты?

И наконец: это только я, или документы API для V7 довольно неполны? Мне удалось найти несколько вещей, проверив в консоли Chrome вещи, которых нет в документации API.

Обновление. Вот как выглядит мой вызов функции поиска:

searchManager.search({
    bounds: map.getBounds(),
    callback: searchSuccess,
    count: 20,
    entityType:"Business",
    errorCallback: searchFail,
    startIndex: 0,
    userData: userData,
    what: what,
    where: search
});

person Remy    schedule 24.09.2012    source источник
comment
Док. является довольно полным, но имейте в виду при поиске функциональности класса, что вы хотите убедиться, что вы просматриваете правильную версию класса карты. Например, функции класса карты версии 6.0 / 7.0 очень похожи, но их синтаксис и пути к классам совершенно разные.   -  person clamchoda    schedule 24.09.2012
comment
Я определенно смотрю на v7.0 (см. Ссылку Interactive SDK в моем OP), на самом деле ... приведенный выше пример находится в Interactive SDK, поэтому там нет ничего общего с v7.0.   -  person Remy    schedule 25.09.2012
comment
Извини, Реми, я должен был быть более конкретным! Я хотел сказать, что у MSDN есть довольно полный набор документации для этих двоих, а также для миграции. Раньше я обновлялся с 6.0 до 7.0, и это было большим подспорьем! msdn.microsoft.com/en-us/library/dd877180.aspx   -  person clamchoda    schedule 25.09.2012
comment
Я попробовал это, подключив событие viewchangeend вместо viewchange на случай, если карта не успела правильно обновить свои границы. Проверено, что границы, переданные в поиск, обновляются правильно, но возвращаемые результаты всегда одинаковы. Это может быть проблема с кешированием или что-то еще, но у меня нет времени / мотивации копать дальше ;-)   -  person Bojin Li    schedule 25.09.2012
comment
В любом случае спасибо, что нашли время посмотреть. Я попробую viewchangeend и дам вам знать, сработает ли это.   -  person Remy    schedule 26.09.2012


Ответы (1)


Я лично не использовал при переходе с версии 6.0, поскольку не уверен, что это было доступно.

Я поделюсь альтернативным маршрутом, который я выбрал, чтобы добиться цели.

Моя функция поиска также помещает Microsoft.Maps.Pushpin именно туда, где пользователь искал («Вы здесь!»).

Затем я создаю границу из канцелярской кнопки:

var viewBoundaries = Microsoft.Maps.LocationRect.fromLocations(pushpin.getLocation());

Затем установите свойства Map.setView для границ. (Как и зум в моем случае)

map.setView({ bounds: viewBoundaries });
map.setView({ zoom: 10 });

Если вы не используете канцелярскую кнопку, вы можете просто создать границу вида из класса местоположения.

Класс расположения MSDN

person clamchoda    schedule 24.09.2012
comment
Фактически, так я показываю все булавки на моей карте. Проблема, с которой я столкнулся, заключается в том, что, хотя я передаю свойство bounds (которое используется в Interactive SDK), когда я вызываю функцию searchManager.search, он не выполняет поиск в этих границах. Я обновлю свой OP тем, как выглядит мой вызов поиска. - person Remy; 25.09.2012
comment
Реми извини, я только что заметил твой комментарий, потому что кто-то проголосовал за. Вы в этом разобрались? Если нет, то какие границы вы пытаетесь искать? Многоугольник на карте, границы обзора и т. Д.? - person clamchoda; 14.01.2013