尝试从数据库lat longs在Google Map上创建多个标记

时间:2014-04-11 00:09:38

标签: javascript php arrays google-maps loops

我有一个数据库,可以插入纬度和经度值。我创建了一个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循环中,所以每个条目我会得到一个标记。不幸的是,这不符合我的意愿,关于如何调整它的任何想法?

3 个答案:

答案 0 :(得分:0)

您没有将地图标记附加到地图本身,只是创建标记对象。我通常使用这样的东西:

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

答案 1 :(得分:0)

这是我定义标记的方式。

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

并将其附加到地图

marker.setMap(myMap);

试试这是否有帮助。只是一个想法,输出正确的坐标?

答案 2 :(得分:0)

不是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

}

?>