我该如何使用多个标记?此代码仅显示一个标记。我知道我需要使用循环但是如何?此代码将标记与数据库中的信息放在Google地图上我的问题是,一旦你将标记放在屏幕上,数据库中的其他标记就不会出现。<?php$connectmaps=$db->prepare("select title,longt,latit,description from pages where onmap = 1");$connectmaps->execute();$loadmaps=$connectmaps->fetch(PDO::FETCH_ASSOC);$loadmap_json = json_encode($loadmaps);?><script>jQuery(function ($) { // Google Maps var script = document.createElement('script'); script.src = "http://maps.googleapis.com/maps/api/js?sensor=false&callback=initialize&key=MY_GOOGLE_MAPS_API_KEY"; document.body.appendChild(script); }); function initialize() { var map; var bounds = new google.maps.LatLngBounds(); var mapOptions = { mapTypeId: 'roadmap' }; // Sayfada Haritayı Göster map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions); map.setTilt(45); // Multiple Markers var phpden = <?php echo $loadmap_json; ?>; var longt= parseFloat(phpden.longt) var title= phpden.title var description = phpden.description var boylam = parseFloat(phpden.latit) var markers = [ [title, longt, latit], ]; // İnfo Windows var infoWindowContent = [ ['<div class="info_content">' + '<h3>' + title+ '</h3>' + '<p>' + description + '</p>' + '</div>' + ''], ]; // Show multiple markers var infoWindow = new google.maps.InfoWindow(), marker, i; // İşaretçi Dizisini Döngüye Sok ve Harita Üzerine Yerleştir for (i = 0; i < markers.length; i++) { var position = new google.maps.LatLng(markers[i][1], markers[i][2]); bounds.extend(position); marker = new google.maps.Marker({ position: position, map: map, title: markers[i][0] });
2 回答
子衿沉夜
TA贡献1828条经验 获得超3个赞
该行$loadmaps=$connectmaps->fetch(PDO::FETCH_ASSOC);
本身只会获取结果集的第一条记录,因此,您可能需要遍历结果集并将每个结果附加到数组,例如
$mapMarkers = [];while($marker=$connectmaps->fetch(PDO::FETCH_ASSOC)){ array_push($mapMarkers, $marker);}$loadmap_json = json_encode($mapMarkers);
您还需要修改您的javascript以期望一组标记,因为您当前的代码需要一个结果。您还应该预料到没有结果的可能性(空JSON数组)。
for(var i = 0; i < phpden.length(); i++) { //Do you process of each marker here... e.g. phpden[i].longt //Or better... create a function that you call for each marker to add them}
只是最后的建议,但如上所述,您应该考虑使用更具描述性的变量名称。如果你在团队中工作,不仅仅是为了别人,而是为了你自己。缩写和不相关的命名变量使您的代码更难理解。当你的复杂性增加后再回来时,你或其他人会浪费时间去弄清楚什么是“phpden”和“boylam”。
小唯快跑啊
TA贡献1863条经验 获得超2个赞
该fetch()方法仅获取第一条记录。相反,使用该fetchAll()方法。这将为您提供集合中每条记录的多维数组。
另请注意,如果您没有将任何变量传递到查询中,PDO确实有一个query()方法; 无需准备和执行。
<?php
$connectmaps = $db->query(
"SELECT title, longt, latit, description FROM pages WHERE onmap = 1"
);
$loadmaps = $connectmaps->fetchAll(\PDO::FETCH_ASSOC);
$loadmaps_json = json_encode($loadmaps);
添加回答
举报
0/150
提交
取消