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ď č. 1Chyba 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.