试图从数据库lat-long在谷歌地图上创建多个标记
Trying to create multiple markers on Google Map from database lat longs
我有一个数据库,可以将纬度和经度值插入其中。我创建了一个PHP循环,以在数组中提取这些值,我希望为谷歌地图上的每个点创建一个标记。这是我需要调整的代码:
<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
}
?>
相关文章:
- 谷歌地图动态创建的标记点击事件使用相同的标记
- 创建带有侧边栏的谷歌地图
- 如何创建一个谷歌地图地理坐标数组
- 如何创建谷歌地图下拉列表
- 从数据库中的城市创建谷歌地图标记
- 谷歌地图API多段线创建失败;未捕获类型错误:数字不是函数;
- 自定义创建的谷歌地图嵌入
- 谷歌地图,使用place_id创建地图
- 如何在谷歌地图v3中创建在所有缩放级别具有相同半径的圆
- 动态创建谷歌地图LatLng类
- 创建谷歌地图自定义信息窗口的当前方式
- downloadUrl函数不适用于使用opencart创建谷歌地图定位器
- 我如何通过纬度和经度变量来创建谷歌地图预览
- 我如何创建谷歌地图这个页面
- 用PHP创建谷歌地图标记
- 在飞行中创建谷歌地图标记
- 我看不到用PHP/MySQL创建谷歌地图的标记图标
- 如何在循环中创建谷歌地图标记,如"Marker1", "Marker2"
- 通过Apps Script HTML服务在Drive中访问Json来创建谷歌地图
- 使用相同的划分和变量动态创建谷歌地图