Я получил свои координаты из базы данных, проблема в том, что я не могу добавить маркер с данными.
Если я поставлю координаты вручную, то это будет работать без проблем, но если я получу значение координат из моей базы данных, карты Google, это не сработает.
Это мой код:
function myFunction() {
var latitud = <?php echo '["' . implode('", "', $dbLatitud) . '"]' ?>;
var longitud = <?php echo '["' . implode('", "', $dbLongitud) . '"]' ?>;
document.getElementById("demo").innerHTML = latitud + longitud;
// document.getElementById("demo").innerHTML = fruits[1]; --- especifico slot
var a = latitud.toString();
var b = longitud.toString();
var myLatLong = {lat: a, lng: b};
var marker = new google.maps.Marker({
position: myLatLong,
map: map,
title: 'Colectivo N°: 1'
});
marker.setMap(map);
}
Я думаю, что проблема с типами данных. Тип координат базы данных — двойной, но я также не могу сделать маркер с данными другого типа.
Я мог бы решить это!
Я изменил .toString ()
function myFunction() {
var latitud = <?php echo '["' . implode('", "', $dbLatitud) . '"]' ?>;
var longitud = <?php echo '["' . implode('", "', $dbLongitud) . '"]' ?>;
var a = latitud.toString();
var b = longitud.toString();
var myLatLong = {lat: a, lng: b};
}
с parseFloat ();
function myFunction() {
var latitud = <?php echo '["' . implode('", "', $dbLatitud) . '"]' ?>;
var longitud = <?php echo '["' . implode('", "', $dbLongitud) . '"]' ?>;
var a = parseFloat(latitud);
var b = parseFloat(longitud);
var myLatLong = {lat: a, lng: b};
}
Проще говоря, не приводите значения как строки для начала — другими словами удаляйте двойные кавычки.
Ты можешь использовать <?=
а также ?>
как короткая рука, чтобы эхо переменной PHP без записи echo
,
Я не проверял свое утверждение, но документация предполагает, что вы не можете просто вставить несколько значений в myLatLong
, У вас на самом деле есть только одно значение для лат и лонг? Если так, это будет делать:
var marker = new google.maps.Marker({
position: {lat:<?=$dbLatitud[0]);?>, lng:<?=$dbLongitud[0];?>},
map: map,
title: 'Colectivo N°: 1'
});
Кроме того, вы можете подготовить свои данные для прямой вставки в JavaScript, используя связанный массив и json_encode()
:
<?php
$lats=['lat'=>-33.890542];
$lng=['lng'=>151.274856];
?>
...
position: <?=json_encode($lats+$lng);?>
Если у вас есть несколько маркеров, то увидеть это демо который использует многомерный массив данных и использует цикл для применения всех маркеров. В этом случае вы снова можете / должны использовать json_encode()
в вашем PHP, чтобы подготовить / отформатировать значения вашей базы данных для JavaScript.