Javascript php中的google地图多标记问题

Javascript php中的google地图多标记问题,javascript,php,html,google-maps,Javascript,Php,Html,Google Maps,我正在开发核心php,我必须从我尝试过的数据库中创建google map multiple marker,但出现了一些问题(警告),如:(地理代码由于以下原因未成功:零结果),我必须将值数组($list)传递给javascript var data=;下面是我的代码,请检查并帮助我 <?php include "db_connection.php"; $locations=array(); $query = $conn->query('SELECT `pg_address`

我正在开发核心php,我必须从我尝试过的数据库中创建google map multiple marker,但出现了一些问题(警告),如:(地理代码由于以下原因未成功:零结果),我必须将值数组($list)传递给javascript var data=;下面是我的代码,请检查并帮助我

<?php
include "db_connection.php";
$locations=array();
    $query =  $conn->query('SELECT `pg_address` FROM `tbl_master_property` limit 10');
     while ($row =$query->fetch_assoc()) {
       $list[] = $row;
    }
?>
<html>
  <head>
    <meta name="viewport" content="initial-scale=1.0, user-scalable=no">
    <meta charset="utf-8">
    <title>Geocoding service</title>
    <style>
      html, body, #map-canvas 
      {
        height: 100%;
        margin: 0px;
        padding: 0px
      }
    </style>
    <script src="https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false"></script>
<script type="text/javascript">
var geocoder;
var map;
var data = <?php echo json_encode($list); ?>; 
//console.log(data);
var pglist = (JSON.stringify(data));
//alert(pglist);
function initialize() 
{
  geocoder = new google.maps.Geocoder();
  var latlng = new google.maps.LatLng(53.3496, -6.3263);
  var mapOptions = 
  {
    zoom: 8,
    center: latlng
  }
  map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions);
  codeAddress(pglist);//call the function
}

function codeAddress(address) 
{
  geocoder.geocode( {address:address}, function(results, status) 
  {
    if (status == google.maps.GeocoderStatus.OK) 
    {
      map.setCenter(results[0].geometry.location);//center the map over the result
      //place a marker at the location
      var marker = new google.maps.Marker(
      {
          map: map,
          position: results[0].geometry.location
      });
    } else {
      alert('Geocode was not successful for the following reason: ' + status);
   }
  });
}

google.maps.event.addDomListener(window, 'load', initialize);

    </script>
  </head>
  <body>
    <div id="map-canvas"></div>
  </body>
</html>

地理编码服务
html,正文,#地图画布
{
身高:100%;
边际:0px;
填充:0px
}
var地理编码器;
var映射;
var数据=;
//控制台日志(数据);
var pglist=(JSON.stringify(数据));
//警报(pglist);
函数初始化()
{
geocoder=新的google.maps.geocoder();
var latlng=新的google.maps.latlng(53.3496,-6.3263);
变量映射选项=
{
缩放:8,
中心:拉丁
}
map=new google.maps.map(document.getElementById('map-canvas'),mapOptions);
codeAddress(pglist);//调用函数
}
函数代码地址(地址)
{
geocoder.geocode({address:address},函数(结果,状态)
{
if(status==google.maps.GeocoderStatus.OK)
{
map.setCenter(结果[0].geometry.location);//将地图居中放置在结果上
//在该位置放置一个标记
var marker=new google.maps.marker(
{
地图:地图,
位置:结果[0]。几何体。位置
});
}否则{
警报('地理编码因以下原因未成功:'+状态);
}
});
}
google.maps.event.addDomListener(窗口“加载”,初始化);

不要将对象直接传递到
codeAddress
函数中,而是在循环中传递每个单独的地址-尽管如果源数据中有很多项,则很容易超出每日配额

最初定义
$locations=array()
但随后尝试填充看似未声明的数组
$list
-您可能打算填充
$locations

<?php
    include "db_connection.php";

    $locations = array();
    $query =  $conn->query('SELECT `pg_address` FROM `tbl_master_property` limit 10');
    while( $row=$query->fetch_assoc() ) {
        $locations[] = $row['pg_address'];
    }
?>
<html>
  <head>
        <meta name="viewport" content="initial-scale=1.0, user-scalable=no">
        <meta charset="utf-8">
        <title>Geocoding service</title>
        <style>
          html, body, #map-canvas {
            height: 100%;
            margin: 0px;
            padding: 0px
          }
        </style>
        <script src="https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false"></script>
        <script type="text/javascript">
            var geocoder;
            var map;
            var data = <?php echo json_encode( $locations ); ?>;

            function initialize(){
              geocoder = new google.maps.Geocoder();
              var latlng = new google.maps.LatLng(53.3496, -6.3263);
              var mapOptions = {
                zoom: 8,
                center: latlng
              }
              map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions);

              for( var n in data ){
                codeAddress.call( this, data[ n ] );
              }
            }

            function codeAddress(address) {
              geocoder.geocode( {address:address}, function(results, status) {
                if( status == google.maps.GeocoderStatus.OK ) {

                  map.setCenter( results[0].geometry.location );

                  var marker = new google.maps.Marker({
                      map: map,
                      position: results[0].geometry.location
                  });

                } else {
                  alert('Geocode was not successful for the following reason: ' + status);
               }
              });
            }
            google.maps.event.addDomListener( window, 'load', initialize );

        </script>
    </head>
    <body>
        <div id="map-canvas"></div>
    </body>
</html>

地理编码服务
html,正文,#地图画布{
身高:100%;
边际:0px;
填充:0px
}
var地理编码器;
var映射;
var数据=;
函数初始化(){
geocoder=新的google.maps.geocoder();
var latlng=新的google.maps.latlng(53.3496,-6.3263);
变量映射选项={
缩放:8,
中心:拉丁
}
map=new google.maps.map(document.getElementById('map-canvas'),mapOptions);
for(数据中的变量n){
调用(这个,数据[n]);
}
}
函数代码地址(地址){
geocoder.geocode({address:address},函数(结果,状态){
if(status==google.maps.GeocoderStatus.OK){
map.setCenter(结果[0].geometry.location);
var marker=new google.maps.marker({
地图:地图,
位置:结果[0]。几何体。位置
});
}否则{
警报('地理编码因以下原因未成功:'+状态);
}
});
}
google.maps.event.addDomListener(窗口“加载”,初始化);

你的代码乱七八糟。。。你不能仅仅把一堆地理代码作为一个单一的地理代码来传递,然后期望它能够工作。我已经检查了“India”单一地理代码是否工作。我从你的代码中了解到的方式是:在你的查询中,你得到一个地址列表,限制为10,并将它们存储在数组$list中。然后使用json_encode on list将其转换为json格式。在此之后,您使用stringify并将其传递给变量pglist,然后将其传递给函数codeaddress,作为用于地理编码的地址?你有没有检查过你的“地址”是什么样子的?首先修复代码。使用for loop或foreach对数组中的每个地址逐个进行地理编码。嗨,tomjosef,我已经按照您的方式进行了,但现在显示了问题for(地理编码由于以下原因未成功:超过查询限制),for loop:for(var i=0;i$locations[]=$row['pg_address'];更改为
$locations[]=urldecode($row['pg_address']),也可能不会发现
提供了更大的成功。如果在这之后没有变化,那么也许可以查看数据并尝试手动查询google的某个特定地址,但您知道该地址失败了