Bing Maps Rest Services Несколько мест для геокодирования - PullRequest
1 голос
/ 24 октября 2011

В настоящее время у меня есть приложение ASP, которое извлекает набор местоположений из источника данных, а затем использует службы REST карты Bing для геокодирования адресов, а затем отображает их в виде таблицы и карты на страницах по 10 результатов за раз.В настоящее время приложение обрабатывает местоположения последовательно ...

    var geocodeRequest = "http://ecn.dev.virtualearth.net/REST/v1/Locations/" + fullAddress.replace('&', ' ').replace(',', ' ') + "?output=json&jsonp=GeocodeCallback&key=" + getCredentials;
    CallRestService(geocodeRequest);

    ......

    function GeocodeCallback(result) {
        if (result &&
                       result.resourceSets &&
                       result.resourceSets.length > 0 &&
                       result.resourceSets[0].resources &&
                       result.resourceSets[0].resources.length > 0) {

            // Set the map view using the returned bounding box
            var bbox = result.resourceSets[0].resources[0].bbox;
            var viewBoundaries = MM.LocationRect.fromLocations(new MM.Location(bbox[0], bbox[1]), new MM.Location(bbox[2], bbox[3]));
            map.setView({ bounds: viewBoundaries });

            // Add a pushpin at the found location
            MM.Location.prototype.locID = null;
            var location = new MM.Location(result.resourceSets[0].resources[0].point.coordinates[0], result.resourceSets[0].resources[0].point.coordinates[1]);
            location.locID = tableRowIndex;
            locs.push(location);

.....

Есть ли способ ускорить это, передав 10 местоположений за один вызов, а затем обработав result.resourceSets [0], result.resourceSets [1] так далее?Как несколько адресов будут переданы в вызов остальных служб?(запятая исключена?)

Спасибо

Ответы [ 2 ]

1 голос
/ 20 февраля 2012

Bing имеет два REST-доступных API геокодирования.Одним из них является тот, который вы используете, который поддерживает только один адрес за раз, а другой - Dataflow API , который предназначен для обработки больших объемов данных.Не похоже, что они действительно вам подходят, так как ваша система в настоящее время разработана.

В зависимости от того, откуда вы получаете свои уличные адреса (все, что вы упоминаете, это «источник данных»), вы можетечтобы выполнить геокодирование больших партий для всех местоположений в вашем источнике данных - переместите геокодирование из времени запроса в пакетный процесс и просто используйте геокодирование времени запроса для тех, к которым пакетный процесс еще не дошел.

0 голосов
/ 15 ноября 2011

Нет способа сделать это, как это выглядит сейчас. Было предложено поддерживать native в javascript (я думаю), но я не думаю, что это было реализовано. Если вам нужен параллелизм, вы можете посмотреть на веб-работников:

Но это пока не поддерживается в IE. Может быть, вы можете попробовать проверить html5 async. Я не знаю, можно ли его использовать при создании элемента script, который создается при вызове служб REST.

...