Обновление местоположения на Google Maps-API
В настоящее время работаю над небольшим проектом и не могу решить проблему, с которой я сталкиваюсь при обновлении местоположения на карте Google через API.
Быстрый запуск (эта часть полностью работает)
- Иметь базу данных MySQL с некоторыми значениями lat и long
- По щелчку кнопки используйте Ajax, чтобы попасть в PHP-скрипт, который извлекает случайный lat и long из базы данных и кодирует в json.
- Я успешно извлекаю значения lat и long и могу предупредить их или вставить их в любом месте на экране. страница.
Вот в чем моя проблема. Я использую фрагмент API Google Maps, который отлично работает. Он показывает карту и, если я жестко кодирую значение lat и long в функции, которая срабатывает по щелчку кнопки, он повторно центрирует карту на новое место. Однако, когда я вставляю значения lat и long через Ajax-скрипт, он не обновляет расположение.
Вот мой код (только передний конец jQuery. Работают контроллеры PHP и ajax.)
<script>
var map;
function initialize()
{
map = new google.maps.Map(document.getElementById('map-canvas'), {
center: new google.maps.LatLng(48.1293954,12.556663),//Setting Initial Position
zoom: 2
});
}
function newLocation(newLat,newLng)
{
map.setCenter({
lat : newLat,
lng : newLng
});
}
google.maps.event.addDomListener(window, 'load', initialize);
$(document).ready(function ()
{
$("#1").on('click', function ()
{
// Get lat and long new values from MySQL
$.ajax({
type: "POST",
url: 'core/ajax_controller.php?c=controller',
data: $(this).serialize(),
dataType: 'json',
success: function(data) {
newLocation(data[0],data[1]);
map.setZoom(15);
}
});
});
});
</script>
Из приведенного выше примера. Если Я предупреждаю или печатаю данные[0], например, которые содержат значение lat, оно отображает значение в виде обычного текста - "26.1725364". Однако при добавлении его в функцию map "newLocation" он, похоже, не проходит через функцию, а повторно центрирует карту.
Однако, если я удалю Ajax и просто получу следующее, с жестко закодированными координатами lat и long. Он работает, каждый щелчок кнопки обновляет центр карты.
$("#1").on('click', function ()
{
newLocation(12.12345678,12.12345678);
map.setZoom(15);
Итак, похоже, что моя проблема заключается в том, чтобы каким-то образом получить доступ ко второму функция javascript "newLocation" внутри другой функции.
Есть ли способ сделать это правильно?
Спасибо
1 ответ:
Ваш
dataрезультат запроса Ajax-это массив строк.Таким образом, быстрое исправление будет:
success: function(data) { newLocation(parseFloat(data[0]),parseFloat(data[1])); map.setZoom(15); }
Comments