簡體   English   中英

試圖從數據庫經緯度在谷歌地圖上創建多個標記

[英]Trying to create multiple markers on Google Map from database lat longs

我有一個數據庫,可以將緯度和經度值插入其中。 我創建了一個 PHP 循環來將這些值提取到一個數組中,我希望為 Google 地圖上的每個點創建一個標記。 這是我需要調整的代碼:

<script type="text/javascript">
var mylat,mylong,request;
var directionsService = new google.maps.DirectionsService();
var directionsDisplay = new google.maps.DirectionsRenderer();

var map = new google.maps.Map(document.getElementById('map'), {
   zoom:7,
   mapTypeId: google.maps.MapTypeId.ROADMAP
 });


mylat= <?php echo $postalLat; ?>;
mylong = <?php echo $postalLong; ?>;
request = {
origin: mylat+','+mylong,
destination: '<?php echo $latRefDef; ?><?php echo $this->item->gpslat; ?>,<?php echo     $longRefDef; ?><?php echo $this->item->gpslong; ?>',
travelMode: google.maps.DirectionsTravelMode.DRIVING
 };


 directionsDisplay.setMap(map);
 directionsDisplay.setPanel(document.getElementById('panel'));
 directionsService.route(request, function(response, status) {
   if (status == google.maps.DirectionsStatus.OK) {
 directionsDisplay.setDirections(response);
 document.getElementById('loader').innerHTML = "";

   }
 });


//omitted database connection here to get array of values

$totalMarkers = count($results);

foreach($results as $result){
$gpsLats[] = $result->gpslat; 
$gpsLongs[] = $result->gpslong; 
}


$i = 0;
while ($i < $totalMarkers) {
$inc = $i++;

?>

var myLatlng = new google.maps.LatLng(<?php echo $gpsLats[$inc]; ?>,<?php echo $gpsLongs[$inc]; ?>);

var marker = new google.maps.Marker({
  position: myLatlng,
  map: map,
  title: 'Hello World!'
  });

<?php

}

?>

</script>

我的想法是,由於創建每個標記的 javascript 都在 while 循環中,所以我會為每個條目獲取一個標記。 不幸的是,這並沒有像我希望的那樣運行,關於如何調整它的任何想法?

您沒有將地圖標記附加到地圖本身,只是創建了標記對象。 我通常使用這樣的東西:

$('#map_canvas').gmap('addMarker',{'position':new google.maps.LatLng(parseFloat(<?php  echo $gpsLats[$inc]; ?>),parseFloat(<?php echo $gpsLongs[$inc]; ?>)});

這就是我定義標記的方式。

var marker = new google.maps.Marker({
                position: latLng,
                title: "Test Marker",
                visible: true,
                map:myMap
            });

並將其附加到地圖

marker.setMap(myMap);

如果這有幫助,請嘗試。 只是一個想法,是否正在輸出正確的坐標?

不是 100% 確定為什么它不能與所有 php 代碼一起工作,但我將其縮減為這個,現在可以工作了:

<?php
while ($i < $totalMarkers) {
$inc = $i++; 
$myLats = $gpsLats[$inc];
$myLogns = $gpsLongs[$inc];
?>
var myLatlng = new google.maps.LatLng(<?php echo $myLats; ?>,<?php echo $myLogns; ?>);

var marker = new google.maps.Marker({
  position: myLatlng,
  map: map,
  title: 'Hello World!'
  });
<?php

}

?>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM