【发布时间】:2018-03-30 23:36:57
【问题描述】:
晚安,我试图用 JSON 在地图上显示标记,但我不能,我不知道为什么,我可以看到地图并可以在地图上移动,但甚至没有一个标记显示,
<?php
require("config.php");
/* lat/lng data will be added to this array */
$locations=array();
$query = $db->query('SELECT * FROM inmuebles');
while( $row = $query->fetch() ){
$longitude = $row['long'];
$latitude = $row['lat'];
/* Each row is added as a new array */
$locations[]=array('lat'=>$latitude, 'long'=>$longitude );
}
/* Convert data to json */
$markers = json_encode( $locations );
echo $markers;
?>
<script type='text/javascript'>
<?php
echo "var markers=$markers;\n";
?>
var map;
var markersArray = [];
function initMap() {
var latlng = new google.maps.LatLng(-16.5338955,-68.0656364);
var myOptions = {
zoom: 13,
center: latlng,
mapTypeId: google.maps.MapTypeId.ROADMAP,
};
var map = new google.maps.Map(document.getElementById("map_canvas"),myOptions);
var infowindow = new google.maps.InfoWindow(), marker, lat, long;
var json=JSON.parse( markers );
for( var o in json ){
lat = json[ o ].lat;
long=json[ o ].long;
marker = new google.maps.Marker({
position: new google.maps.LatLng(lat,long),
map: map
});
google.maps.event.addListener( marker, 'click', function(e){
infowindow.setContent( this.name );
infowindow.open( map, this );
}.bind( marker ) );
}
}
</script>
$markers 的输出是
[{"lat":"-16.52629052070058","long":"-68.0797004699707"},{"lat":"-16.500122130208325","long":"-68.12089920043945"},{"lat":"-16.54307592346882","long":"-68.06425094604492"}]
提前感谢我一直在努力找出错误在哪里
编辑
<?php
$con = mysqli_connect('localhost','waru','olairhead154','inmueble');
?>
<?php
require("config.php");
/* lat/lng data will be added to this array */
$locations=array();
$query = $db->query('SELECT * FROM inmuebles');
while( $row = $query->fetch() ){
$longitude = $row['long'];
$latitude = $row['lat'];
/* Each row is added as a new array */
$locations[]=array('lat'=>$latitude, 'long'=>$longitude );
}
/* Convert data to json */
$markers = json_encode( $locations );
echo $markers;
?>
<script type='text/javascript'>
<?php
echo "var markers=$markers;\n";
?>
var map;
var markersArray = [];
function initMap() {
var latlng = new google.maps.LatLng(-16.5338955,-68.0656364);
var myOptions = {
zoom: 13,
center: latlng,
mapTypeId: google.maps.MapTypeId.ROADMAP,
};
var markers = '<?= json_encode($markers) ?>';
var map = new google.maps.Map(document.getElementById("map_canvas"),myOptions);
var infowindow = new google.maps.InfoWindow(), marker, lat, long;
var json=markers;
for( var o in json ){
lat = json[ o ].lat;
long=json[ o ].long;
marker = new google.maps.Marker({
position: new google.maps.LatLng(lat,long),
map: map
});
google.maps.event.addListener( marker, 'click', function(e){
infowindow.setContent( this.name );
infowindow.open( map, this );
}.bind( marker ) );
}
}
google.maps.event.addDomListener(window, "load", initMap);
</script>
这是我所做的更改,但仍然没有显示标记,我对此真的很陌生,请耐心等待
谢谢
【问题讨论】:
-
“$markers 的输出”不是 JSON 字符串,它是一个 javascript 数组,
JSON.parse无法处理它。将其直接传递到您的循环中。 (Proof of concept fiddle) -
@geocodezip 试过你告诉我的,但我还是看不到标记,你能帮我多一点吗? var 标记 = '= json_encode($markers) ?>'; var map = new google.maps.Map(document.getElementById("map_canvas"),myOptions); var infowindow = new google.maps.InfoWindow(), marker, lat, long; var json=标记; for( var o in json ){ lat = json[ o ].lat;长=json[o].long; marker = new google.maps.Marker({ position: new google.maps.LatLng(lat,long), map: map });
-
1.请不要在 cmets 中发布(大量)代码,它不可读(edit 你的问题是解决 cmets 的问题)。 2.如果我读到你发布的内容,那不是我“告诉你”的,请看小提琴。
-
@geocodezip 我编辑了帖子,现在可以更好地显示代码请帮助我,我似乎找不到该怎么做
-
设法做到了,这是我的一个愚蠢的错误......非常感谢你的回答
标签: javascript php mysql google-maps google-maps-api-3