Я пытаюсь использовать массив PHP, чтобы получить значения long и lat из базы данных, и поместить их на карту, используя gmaps.js.
До сих пор я создал массив в PHP и повторил это на своей странице, чтобы убедиться, что отображаются правильные значения.
$data = array();
$data['latitude'] = array($lat);
$data['longitude'] = array($lng);
echo json_encode($data);
Таким образом, $ data — это массив со значениями, которые я хочу получить.
Затем я хочу использовать jQuery для получения данных из json encode, поместить их в местоположения маркеров карты и отобразить маркеры следующим образом:
$.ajax({
type: "POST",
url: "phppage.php",
dataType: "JSON",
success: function(data) {
$.each(data, function(key, value) {
poi_marker = {
marker: {
lat: data.latitude,
lng: data.longitude,
}
}
}
poi_markers.push(poi_marker);
});
map.addMarkers(poi_markers);
}
});
Я не получаю ошибок в своей консоли (используя firefox и firebug), карта отображается, но маркеры не отображаются.
Я не думаю, что ваш код на самом деле делает то, что вы думаете, что он делает. Увидеть эта скрипка за то, что на самом деле происходит с вашей петлей.
Если вы храните массив по-разному на стороне PHP, вам будет проще перебрать несколько маркеров в JS. Кроме того, я не думаю, gmaps.js
нужен этот дополнительный «маркер» ключ в объекте.
Новый PHP
$data = array();
$data[] = array(
'latitude' => $lat
,'longitude' => $long
);
echo json_encode($data);
Новый JS
var poi_markers = []; // make sure you declare this before using it. if you already declare it somewhere else, don't use this line
$.ajax({
type: "POST",
url: "phppage.php",
dataType: "JSON",
success: function(data) {
$.each(data, function(key, value) {
var poi_marker = {
lat: value.latitude,
lng: value.longitude
}
poi_markers.push(poi_marker);
});
map.addMarkers(poi_markers);
}
});
У вас могут быть проблемы, потому что вы указываете dataType: "JSON"
но (по крайней мере, в коде вы разместили) вы не меняете заголовок на стороне php. Возможно, вам придется добавить эту строку в начало phppage.php
header("Content-Type: application/json", true);
Я полагаю, что данные были успешно получены по мере необходимости
$.ajax({
type: "POST",
url: "phppage.php",
dataType: "JSON",
success: function(data) {
$.each(data, function(key, value) {
map.addMarker{
lat: data.latitude,
lng: data.longitude
}
}
}
});