我正在尝试一次在Google地图上绘制5套〜3万个标记,具体取决于用户的输入/选择。

我注意到应用程序使用以下代码渲染点时加载时间非常慢。

function set_markers(minyear,maxyear,minprice,maxprice){

  if (window.XMLHttpRequest) {
    xmlhttp = new XMLHttpRequest();
 } else { // code for IE6, IE5
    xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
 }
 // this method is used to capture the response of the http request
 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"]);
        date=String(a["date_of_sale"]);
        post_latlng = new google.maps.LatLng(lat,lng);
        content ="<b>Address:</b> " + address + "</br>" + "<b>Price:</b>€ " + price + '</br>' + "<b>Date of Sale:</b> " + date;
        add_marker(address,post_latlng);
        add_InfoWindow(content,marker);
      }
     }
  }
  xmlhttp.open("GET","ajax/pinpoints.php?lat1="+lat1+"&lat2="+lat2+"&lng1="+lng1+"&lng2="+lng2+"&minyear="+minyear+"&maxyear="+maxyear+"&minprice="+minprice+"&maxprice="+maxprice,true);
  xmlhttp.send();
}

function add_marker(add,posit){
  var marker = new google.maps.Marker({
        map: map,
        title: add,
        position: posit
      });
}
function add_InfoWindow(con,mark){
  var infowindow = new google.maps.InfoWindow();
  google.maps.event.addListener(marker,'click', (function(mark,con,infowindow{
    return function(){
     infowindow.setContent(con);
     infowindow.open(map,mark);
    };
  })(marker,content,infowindow));
 }


我想知道是否可以使用Fusion Tables加快此过程,并且仍然允许我按照上面的Javascript代码指定的方式绘制点?如果是这样,我该如何从Javascript调用Fusion Table,并将返回值存储在JSON数组中,这样当从PHP / Postgres切换到Fusion Tables时,对应用程序造成的干扰最小。我已经创建了相关的Fusion Table,我只需要知道是否以及如何连接它?

也欢迎提出有关如何优化上述代码以加快运行时间的建议。

最佳答案

我不太了解应用程序应该做什么,但是最好的猜测是您想在Google Maps JavaScript API中使用FusionTablesLayer并根据用户输入更改查询。

关于javascript - Fusion Tables与使用PHP的Postgres,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28462344/

10-14 11:19