Обновление карт Bing с помощью кнопок, возвращаемых через AJAX-вызов в базу данных - PullRequest
0 голосов
/ 13 января 2019

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

Я могу загрузить Bing Maps и включить кнопки во время загрузки, но я пытаюсь обновить (т.е. удалить все существующие кнопки и заменить их новыми) на входах в поле поиска. .

Я использую AJAX для отправки строк поиска в серверные сценарии, которые используют строку поиска для поиска в базе данных и возврата соответствующей лат / длинной информации.

Вот мой код для создания карты:

window.onload  = GetMap;
var map = null;
var searchManager = null;
var currInfobox = null;

function GetMap(){
   Microsoft.Maps.loadModule('Microsoft.Maps.Themes.BingTheme', { callback: function() 
       {
           map = new  Microsoft.Maps.Map(document.getElementById('map'), 
           { 
              credentials: "MY_API_KEY",
              mapTypeId:  Microsoft.Maps.MapTypeId.road,
              enableClickableLogo: false,
              enableSearchLogo: false,
              showScalebar: false,
              showTermsLink: false,
              center: new  Microsoft.Maps.Location(49.2, -123.1),
              zoom: 10,
              showMapTypeSelector:false,
              theme: new  Microsoft.Maps.Themes.BingTheme()
           }); 

            //pins appear successfully on map load
            var pins = new Microsoft.Maps.EntityCollection();

             // some posotion
             var position = new Microsoft.Maps.Location(19, -120);
            // Creates a Pushpin
            var pin = new Microsoft.Maps.Pushpin(position);
            // Adds the pin to the collection instead of adding it directly to the Map
            pins.push(pin);


            // some other posotion
            var position = new Microsoft.Maps.Location(18, -121);
            // Creates a Pushpin
            var pin = new Microsoft.Maps.Pushpin(position);
            // Adds the pin to the collection instead of adding it directly to the Map
            pins.push(pin);

            // Adds all pins at once
            map.entities.push(pins);


           }
        });
    }

Это хорошо работает, карта загружается, на карте размещены два пина

Затем по запросу пользователя следующий код:

       $('#activate').click(function(){         
            var searchstring = $(this).siblings('input').val();
            $.ajax
            ({ 
                url: 'search_tool.php',
                data: {"searchstring": searchstring},
                type: 'post',
                success: function(result)
                {
                    //do something here to add pins to map?
                }
            });
        });

Я могу получить в результате вызова AJAX любую строку, включающую в себя значения lat и long плюс.

Я попытался настроить функцию GetMap (), чтобы иметь такой параметр, как GetMap (позиции); где позиции - это массив точек, которые я мог передать функции из результата AJAX, например:

       $('#activate').click(function(){         
            var searchstring = $(this).siblings('input').val();
            $.ajax
            ({ 
                url: 'search_tool.php',
                data: {"searchstring": searchstring},
                type: 'post',
                success: function(result)
                {
                    //code to turn result -> array positions[] detailing new map points
                    GetMap(positions);
                }
            });
        });

но это не сработало, и я думаю, что это, вероятно, проблема в сфере? Я не уверен, куда идти отсюда, любая помощь очень ценится.

...