Postgres和Google Maps Markers的问题

时间:2015-02-10 10:42:29

标签: php sql postgresql google-maps google-maps-markers

我试图根据Postgres数据库中的数据在地图上绘制点,任何人都可以告诉我为什么这不会起作用。我正试图弄清楚我的想法

我使用这个PHP代码从Postgres数据库中提取数据,这似乎工作得很好:

<?php
ini_set('memory_limit', '1024M');
      // Connecting, selecting database
$dbconn = pg_connect(**MY LOGON DEETS**)
          or die('Could not connect: ' . pg_last_error());
$lat1 = $_GET['lat1'];
$lat2 = $_GET['lat2'];
$lng1 = $_GET['lng1'];
$lng2 = $_GET['lng2'];

$pin_points = 'SELECT lat,lng,price,address_string FROM house_price_data_db.main where lat>=$1 and lat<=$2 and lng<=$3 and lng>=$4';
$result_pinpoints_points = pg_query_params($dbconn,$pin_points,array($lat1,$lat2,$lng1,$lng2)) or die('Query failed: ' . pg_last_error());
$pin_points_array = array();
while($r = pg_fetch_assoc($result_pinpoints_points)) {
    $pin_points_array[] = $r;
}
header("Content-type: application/json" ); // set the header to json 
echo(json_encode(array_values($pin_points_array), JSON_NUMERIC_CHECK)); // this will return json
pg_close($dbconn);
?>

使用下面列出的代码尝试在地图上绘制点。我觉得我的Javascript存在错误/问题,但我无法弄清楚:

 var lat1=55.55;
 var lat2=56.05;
 var lng1=8.00;
 var lng2=8.45;
 function setMarkers(){
    if (window.XMLHttpRequest) {
    // code for IE7+, Firefox, Chrome, Opera, Safari
     xmlhttp = new XMLHttpRequest();
    } else { // code for IE6, IE5
     xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    }

    xmlhttp.onreadystatechange = function(){
      if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
      var pinpoints = JSON.parse(xmlhttp.responseText);
      var marker;
      var i=0;
      var lat;
      var lng;
      var price;
      var address;
      var post_latlng;
      var content;
      for (i = 0;i<pinpoints.length;i++){ 
        a=pinpoints[i];
        lat=parseFloat(a["lat"]);
        lng=parseFloat(a["lng"]);
        price=parseFloat(a["price"]);
        address=String(a["address_string"]);

        post_latlng = new google.maps.LatLng(lat,lng);
        content = "<b>Price:</b> " + price +  '</br>' + "<b>Address:</b> " + address;  

        var marker = new google.maps.Marker({  
          map: map, 
          title: address,
          position: post_latlng  
        });
        map.setCenter(marker.getPosition());
        var infowindow = new google.maps.InfoWindow();

        google.maps.event.addListener(marker,'click', (function(marker,content,infowindow){ 
          return function(){
           infowindow.setContent(content);
           infowindow.open(map,marker);
          };
        })(marker,content,infowindow)); 
      }
    }
   }
   xmlhttp.open("GET","pinpoints.php?lat1="+lat1+"&lat2="+lat2+"&lng1="+lng1+"&lng2="+lng2,false);
   xmlhttp.send();
 }

由于某种原因,它不起作用,我希望该函数调用PHP脚本,返回一个数组然后使用这个数组的内容和Javscript函数在地图上绘制标记,当点击显示一些信息。当我使用Firebug时,我没有收到任何错误。关于如何解决这个问题的任何建议都非常受欢迎。

1 个答案:

答案 0 :(得分:0)

事实证明我的代码工作正常,但我发送到数据库测试函数的查询没有任何返回的行。