/ / Vykreslenie viacerých značiek na google mape - javascript, php, json, google-maps, google-maps-api-3

Vytváranie viacerých značiek na mape google - javascript, php, json, google-maps, google-maps-api-3

Mám súbor php, ktorý vydáva tieto údaje json

[{"lat":"5.92687670","lng":"116.10072270"},{"lat":"6.23331022","lng":"116.42924500"},{"lat":"47.62456131","lng":"-122.35644531"},{"lat":"47.60636520","lng":"-122.33765411"},{"lat":"47.61282349","lng":"-122.34567261"},{"lat":"47.60596085","lng":"-122.34036255"},{"lat":"47.61397552","lng":"-122.34546661"},{"lat":"47.61721420","lng":"-122.32658386"}]

Toto je php kód pre výsledok vyššie (genjson.php):

<?php

require("connect.php");

$link = mysqli_connect("localhost", "$username", "$password", "$database");

if (!$link) {
echo "Error: Unable to connect to MySQL." . PHP_EOL;
echo "Debugging errno: " . mysqli_connect_errno() . PHP_EOL;
echo "Debugging error: " . mysqli_connect_error() . PHP_EOL;
exit;
}

mysqli_select_db($link,"senangbah");

$var = array();
$sql = "SELECT `lat`, `lng` FROM markers";

$result = mysqli_query($link, $sql);

while($obj = mysqli_fetch_object($result)) {
$var[] = $obj;
}

header("Content-Type: application/json");
echo json_encode($var);
?>

a toto je javascript pre mapu

function initMap() {
var latlng = new google.maps.LatLng(5.5117338, 117.0463637);
var myOptions = {
zoom: 3,
center: latlng,
mapTypeId: google.maps.MapTypeId.ROADMAP,
mapTypeControl: false
};
var map = new google.maps.Map(document.getElementById("map"),myOptions);

$.getJSON("genjson.php", function(markers) {
for (i = 0; i < markers.length; i++) {
marker = new google.maps.Marker({
position: new google.maps.LatLng(markers[i][0], markers[i][1]),
map: map
});

}
});

}

načítanie mapy je v poriadku, ale nezobrazujú sa žiadne značky? ktorú časť robím zle? TQ

odpovede:

1 pre odpoveď č. 1

Chyba je v tomto vyhlásení:

position: new google.maps.LatLng(markers[i][0], markers[i][1]),

Od každého marker[n] je objekt, nie pole, musíte namiesto toho použiť:

position: new google.maps.LatLng(markers[i].lat, markers[i].lng),

BTW na vedomie, že je lepšie písať var marker = ... a nie iba marker = ... aby sa zabránilo znečisťovaniu globálneho priestoru.