2017-08-15 2 views
-1

Ich habe meine Koordinaten aus meiner Datenbank, das Problem ist, dass ich keinen Marker mit Daten hinzufügen kann.Ich kann keinen Google Maps Marker erstellen

Wenn ich die Koordinaten manuell setze, dann funktioniert es ohne Probleme, aber wenn ich den Koordinatenwert von meiner Datenbank, Google Maps, bekomme, funktioniert es nicht.

Dies ist mein Code:

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

} 

Ich denke, das Problem mit den Datentypen ist. Der Typ der Datenbankkoordinaten ist doppelt, aber ich kann auch keinen Marker mit anderen Daten erstellen.

+1

Bitte schreiben Sie das Fehlerprotokoll. –

Antwort

0

Ich könnte es lösen!

I geändert .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}; 
} 

mit 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

Einfacher lassen Sie die Werte nicht als Strings beginnen - entfernen Sie die Anführungszeichen.

Sie können <?= und ?> als kurze Hand zu Echo-PHP-Variable ohne Schreiben echo verwenden.

Ich habe meine Behauptung nicht getestet, aber die Dokumentation scheint darauf hinzuweisen, dass Sie nicht einfach mehrere Werte in myLatLong implodieren können. Hast du eigentlich nur einen Wert für lat und long? Wenn ja, wird dies tun:

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

Darüber hinaus könnten Sie Ihre Daten für die direkten Einbau in die JavaScript-prep mit einem zugeordneten Array und json_encode():

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

Wenn Sie mehr Marker zu tun haben, dann see this demo Diese verwendet ein mehrdimensionales Datenfeld und verwendet eine Schleife, um alle Markierungen anzuwenden. In diesem Fall können/sollten Sie erneut json_encode() in Ihrem PHP verwenden, um Ihre Datenbankwerte für Javascript vorzubereiten/zu formatieren.