【问题标题】:Trying to create multiple markers on Google Map from database lat longs尝试从数据库 lat longs 在 Google Map 上创建多个标记
【发布时间】:2014-04-11 00:09:37
【问题描述】:

我有一个数据库,可以将纬度和经度值插入其中。我创建了一个 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 循环内,所以我会为每个条目获得一个标记。不幸的是,这并没有像我希望的那样运行,有什么想法可以调整它吗?

【问题讨论】:

  • 如何创建地图?你有地图或标记吗?你能提供浏览器看到的代码吗?也许一些样本纬度和经度?您所说的“没有按我的意愿运行”是什么意思?显示问题的小提琴怎么样?
  • @geocodezip 我在问题中添加了更多代码上下文。这应该可以帮助您了解我是如何构建地图的。有一张地图提供了两点之间的行车路线,我想在这张地图上放置标记。谢谢
  • 一般来说,your code works 如果我将它包装在一个初始化函数中并等待 DOM 完成加载,但由于您没有提供任何示例数据,这可能是问题所在。跨度>
  • @geocodezip 谢谢,那个小提琴真的帮我解决了这个问题。 :)

标签: javascript php arrays google-maps loops


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    这就是我定义标记的方式。

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

    并将其附加到地图上

    marker.setMap(myMap);
    

    如果这有帮助,请尝试。想一想,输出的坐标是否正确?

    【讨论】:

    • 我试过了,但仍然没有标记。我已经测试了坐标,它们在 php 值中看起来不错。
    • firebug 或您可能正在使用的任何其他工具中是否有任何 Javascript 错误?
    • 最终我不得不将 while 循环上方的所有 php 从 javascript 中移出,现在它可以工作了。感谢您的意见。
    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-24
      • 1970-01-01
      • 2014-04-28
      • 2019-05-31
      • 2018-08-31
      • 1970-01-01
      相关资源
      最近更新 更多