Я создаю инструмент картирования / поиска, который должен отображать результаты местоположения на карте на основе пользовательского ввода в поле поиска.
Я могу загрузить 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);
}
});
});
но это не сработало, и я думаю, что это, вероятно, проблема в сфере? Я не уверен, куда идти отсюда, любая помощь очень ценится.