Javascript 试图从数据库lat longs在Google地图上创建多个标记

Javascript 试图从数据库lat longs在Google地图上创建多个标记,javascript,php,arrays,google-maps,loops,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

我有一个数据库,可以将纬度和经度值插入其中。我已经创建了一个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>

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'){
缩放:7,
mapTypeId:google.maps.mapTypeId.ROADMAP
});
迈拉=;
mylong=;
请求={
产地:迈拉+','+迈隆,
目的地:',',
travelMode:google.maps.Directions travelMode.DRIVING
};
方向显示.setMap(地图);
directionsDisplay.setPanel(document.getElementById('panel');
路由(请求、功能(响应、状态){
if(status==google.maps.directionstatus.OK){
方向显示。设置方向(响应);
document.getElementById('loader').innerHTML=“”;
}
});
//此处省略了获取值数组的数据库连接
$totalMarkers=计数($results);
foreach($results作为$result){
$gpslat[]=$result->gpslat;
$gpsLongs[]=$result->gpslong;
}
$i=0;
而($i<$totalMarkers){
$inc=$i++;
?>
var mylatng=newgoogle.maps.LatLng(,);
var marker=new google.maps.marker({
职位:myLatlng,
地图:地图,
标题:“你好,世界!”
});

我的想法是,由于创建每个标记的javascript都在while循环中,因此我会在每个条目中获得一个标记。不幸的是,这没有发挥我希望的功能,关于如何调整它,有什么想法吗?

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

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

我就是这样定义标记的

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

}

?>

var mylatng=newgoogle.maps.LatLng(,);
var marker=new google.maps.marker({
职位:myLatlng,
地图:地图,
标题:“你好,世界!”
});

如何创建地图?是否有任何地图或标记?能否提供浏览器看到的代码?可能是一些纬度和经度示例?您所说的“功能不正常”是什么意思?用小提琴来显示问题如何?@geocodezip我在问题中添加了更多的代码上下文。这应该可以帮助您了解我是如何构建地图的。有一张地图提供两点之间的行驶方向,我想在整个地图中放置标记。一般来说,如果我将其包装在初始化函数中,请感谢然后等待DOM完成加载,但由于您没有提供任何示例数据,这可能就是问题所在。@geocodezip谢谢,那把小提琴真的帮了我解决了它。:)我试过了,但仍然没有标记。我已经测试了坐标,它们在php值中看起来很好。firebug或您可能正在使用的任何其他工具中有任何Javascript错误吗?最终我不得不将所有php移到while循环之外,现在可以工作了。感谢您的输入。