/ / Начертаване на няколко маркера на google map - javascript, php, json, google-maps, google-maps-api-3

Изчертаване на няколко маркери на google map - javascript, php, json, google-maps, google-maps-api-3

Имам php файл, който извежда тази 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"}]

това е php кодът за резултата по-горе (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);
?>

и това е javascript за картата

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

}
});

}

картата се зарежда добре, но не се показват маркери? коя част правя грешно? ТК

Отговори:

1 за отговор № 1

Грешката е в това изявление:

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

От всеки marker[n] е обект, а не масив, вместо това трябва да използвате:

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

BTW имайте предвид, че е по-добре да пишете var marker = ... отколкото просто marker = ... за да избегнем замърсяването на глобалното пространство.