Google Map API를 사용하여 여러 사용자 위치를 표시하려고 할 때 master_service_provider 테이블의 모든 값을 루프를 사용하여 표시해야합니다.Google지도에 여러 위치가 표시됨 (오류 : locations [i]가 정의되지 않음)
JavaScript 오류가 발생합니다. 유형 오류 : locations [i]가 정의되지 않았습니다..
<div id="map"></div>
<script>
var map;
function initMap() {
var i = '0';
<?php
$result=$conn->query("SELECT * FROM `master_service_provider`");
$a=0;
while($row = mysqli_fetch_array($result)) {
$service_provider_id = $row['id'];
$fullname = $row['fullname'];
$fulladdress = $row['fulladdress'];
$phone = $row['phone'];
$lat = $row['lat'];
$lng = $row['lng'];
?>
var <?php echo 's'.$phone; ?> = {
info: '<h3><?php echo $fullname; ?></h3>\
<h4><?php echo $fulladdress; ?></h4>\
<a href="view_service_provider.php?service_provider_id=<?php echo $service_provider_id; ?>">View Info</a>',
lat: <?php echo $lat; ?>,
long: <?php echo $lng; ?>
};
var locations = [
[<?php echo 's'.$phone; ?>.info, <?php echo 's'.$phone; ?>.lat, <?php echo 's'.$phone; ?>.long, <?php echo $a++; ?>],
];
marker = new google.maps.Marker({
position: new google.maps.LatLng(locations[i][1], locations[i][2]),
map: map
});
google.maps.event.addListener(marker, 'click', (function (marker, i) {
return function() {
infowindow.setContent(locations[i][0]);
infowindow.open(map, marker);
}
})(marker, i));
i++;
<?php } ?>
var map = new google.maps.Map(document.getElementById('map'), {
zoom: 11,
center: new google.maps.LatLng(19.198313, 72.893533),
mapTypeId: google.maps.MapTypeId.ROADMAP
});
var infowindow = new google.maps.InfoWindow({});
var marker;
}
</script>
내가 그것을 단순화 제안 작동하도록 알려줘. 당신은 PHP와 자바 스크립트가 혼합되어 있습니다. 당신은 당신이 다시 얻을/PHP를 사용하여 구축하고 PHP를 추가 혼란없이 자바 스크립트를 디버깅하는 자바 스크립트 개체/배열을 만들 기대하고있는 json을 덤프 수 있습니까? –
맥스가 말했다. 자바 스크립트에서 PHP를 분리하십시오. PHP는 위에 보관하십시오. PHP 데이터로 자바 스크립트 기능을 중단하지 마십시오. 당신이해야 할 일은 "var location"을 생성 한 다음 페이지 소스를보고 javascript 배열과 같은지 확인하십시오 (주의 : 그것은 왜 $ phone을 포함합니까? 왜 [1]과 [2] ? 그것은 lat와 lng가 아닌 곳이 아닙니다 ... lat와 lng는 $ lat와 $ lng에 있습니다 ...). –