Saya sudah mendapatkan Koordinat saya dari Database saya, masalahnya adalah, saya tidak dapat menambahkan penanda dengan data.

Jika saya meletakkan koordinat secara manual maka itu berfungsi dengan baik tanpa masalah, tetapi jika saya mendapatkan nilai koordinat dari Database saya, google maps, itu tidak berfungsi.

Ini kode saya:

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);

}

Saya pikir masalahnya adalah dengan tipe data. Jenis koordinat basis datanya ganda, tetapi saya juga tidak dapat membuat penanda dengan jenis data lainnya.

-1
Santiago Jorda 15 Agustus 2017, 21:08

2 jawaban

Jawaban Terbaik

Aku bisa menyelesaikannya!

Saya mengubah .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};
}

Dengan 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};
}
0
Santiago Jorda 15 Agustus 2017, 18:20

Lebih sederhananya, jangan berikan nilai sebagai string untuk memulai -- dengan kata lain hapus tanda kutip ganda.

Anda dapat menggunakan <?= dan ?> sebagai singkatan untuk menggemakan variabel php tanpa menulis echo.

Saya belum menguji pernyataan saya, tetapi dokumentasi tampaknya menunjukkan bahwa Anda tidak bisa begitu saja memasukkan beberapa nilai ke dalam myLatLong. Apakah Anda sebenarnya hanya memiliki satu nilai untuk lat dan long? Jika demikian, ini akan dilakukan:

var marker = new google.maps.Marker({
  position: {lat:<?=$dbLatitud[0]);?>, lng:<?=$dbLongitud[0];?>},
  map: map,
  title: 'Colectivo N°: 1'
});

Selanjutnya, Anda dapat menyiapkan data Anda untuk penyisipan langsung ke dalam javascript menggunakan array terkait dan json_encode():

<?php
$lats=['lat'=>-33.890542];
$lng=['lng'=>151.274856];
?>
...
position: <?=json_encode($lats+$lng);?>

Jika Anda memiliki banyak penanda, lihat demo ini yang menggunakan larik multidimensi data dan menggunakan loop untuk menerapkan semua penanda. Dalam hal ini, Anda kembali dapat/harus menggunakan json_encode() di php Anda untuk menyiapkan/memformat nilai database Anda untuk javascript.

0
mickmackusa 15 Agustus 2017, 22:13