2015-05-18 63 views
-1

我不想使用纬度和经度显示多个标记,只能通过存储在mysql数据库中的地址显示。纬度和经度不是表格中的商店。如何使用google map api通过地址显示多个位置标记?

我已经在它的工作,并成功地显示一个标志,但我的web应用程序要求我根据位置 这里显示多个标记的代码:

<?php include_once("dbcon.php") ; 
?> 
<html> 
<?php 
$search = $_POST['search']; 
$results = mysql_query("SELECT * FROM eventsTable WHERE eventLocation LIKE '%$search%'"); 
while ($row = mysql_fetch_assoc($results)) { 
     $ename = $row["eventName"]; 
     $edate = $row["eventDate"]; 
     $edetail=$row["eventDetails"]; 
     $eloc = $row["eventLocation"]; 
     $ecity = $row["eventCity"]; 

     echo "<p> ".json_encode($eloc)."</p>"; echo json_encode($ecity); } 
?> 

<head> 
<meta name="viewport" content="initial-scale=1.0, user-scalable=no"/> 
<meta http-equiv="content-type" content="text/html; charset=UTF-8"/> 
<title>Google Maps JavaScript API v3 Example: Geocoding Simple</title> 
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script> 
<script type="text/javascript"> 
    var geocoder; 
    var map; 
    var address = "<?php echo $eloc; ?>,<?php echo $ecity; ?>, PK"; 
    function initialize() { 
    geocoder = new google.maps.Geocoder(); 
    var latlng = new google.maps.LatLng(30.51687, 69.40949); 
    var myOptions = { 
     zoom: 10, 
     center: latlng, 
    mapTypeControl: true, 
    mapTypeControlOptions: {style: google.maps.MapTypeControlStyle.DROPDOWN_MENU}, 
    navigationControl: true, 
     mapTypeId: google.maps.MapTypeId.ROADMAP 
    }; 
    map = new google.maps.Map(document.getElementById("map_canvas"), myOptions); 
    if (geocoder) { 
     geocoder.geocode({ 'address': address}, function(results, status) { 
     if (status == google.maps.GeocoderStatus.OK) { 
      if (status != google.maps.GeocoderStatus.ZERO_RESULTS) { 
      map.setCenter(results[0].geometry.location); 

      var infowindow = new google.maps.InfoWindow(
       { content: '<b>'+address+'</b>', 
        size: new google.maps.Size(150,50) 
       }); 

      var marker = new google.maps.Marker({ 
       position: results[0].geometry.location, 
       map: map, 
       title:address 
      }); 
      google.maps.event.addListener(marker, 'click', function() { 
       infowindow.open(map,marker); 
      }); 

      } else { 
      alert("No results found"); 
      } 
     } else { 
      alert("Geocode was not successful for the following reason: " + status); 
     } 
     }); 
    } 
    } 
</script> 
</head> 
<body style="margin:0px; padding:0px;" onload="initialize()"> 
<div id="map_canvas" style= "right-padding=0px; width:50%; height:50%"> 
</body> 
</html> 
+0

请[停止使用'mysql_ *'函数](http://stackoverflow.com/questions/12859942/why-shouldnt-i-use-mysql-functions-in-php)。他们不再被维护,并[正式弃用](https://wiki.php.net/rfc/mysql_deprecation)。了解[准备的陈述](http://en.wikipedia.org/wiki/Prepared_statement),并考虑使用PDO,[它不像你想象的那么难](http://jayblanchard.net/demystifying_php_pdo.html) 。 –

+0

有多少“更多标记”?地理编码器将工作约10而不会触及查询/速率限制。 – geocodezip

+0

差不多40-50。 :/ – ayleen

回答

0

我不想使用纬度和经度显示多个标记,只能通过存储在mysql数据库中的地址显示。

不幸的是,Google地图API需要经度/纬度才能向地图添加标记。您应该考虑使用GeoLocation API将您的地址转换为坐标,然后您可以以传统方式添加标记。

如果这不可行,您可以使用AJAX检索循环中的经度/纬度(如this answer),但您可能会按照此问题的评论中所述达到速率限制。

相关问题