2015-02-10 72 views
0

我试图根据Postgres数据库中的数据绘制地图上的点,任何人都可以告诉我为什么这不起作用..我挠我的头试图想象它出。Postgress和谷歌地图标记问题

我从一个Postgres数据库使用这个PHP代码,这似乎是工作就好拉数据:

<?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

你是什么意思“它不会工作”。你期望发生什么(它应该在地图上画出点)?然后发生了什么? – 2015-02-10 10:49:56

+0

@couling我期望函数调用PHP脚本,返回一个数组,然后使用这个数组的内容和Javascript函数在地图上绘制标记,点击时显示一些信息。当我运行该函数时,它调用PHP函数,然后不再进一步。 – JellyTots 2015-02-10 12:50:16

+0

你的脚本对我有效并且有效(正如你所说的PHP脚本工作正常,所以响应必须是有效的JSON)。根据你的代码,我可能只能猜测'map'在'setMarkers()'里面是不可访问的。当我的假设错误时,您需要发布更多代码。 – 2015-02-10 19:17:45

回答

0

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