0


我對融合表和谷歌地圖API很新穎。我正在致力於微軟提供的出租車數據集。
的數據格式的類型是從網頁上的融合表打印查詢數據

taxi_id, timestamp, longitude, latitude 

的數據由大致10000和奇數北京的出租車收集,歷時六天。有單獨的文件代表每輛出租車的數據。作爲試運行,我剛剛將一個出租車文件導入到Google融合表。我的想法是,以北京的緯度經度爲中心,並提供一個合適的半徑,我畫了一個圓圈,併吞噬了該圓圈中的所有點。

由於我需要繪製只有經緯度但不包含地址的圓和吞噬點(ST_INTERSECT將地址作爲我認爲的參數之一),因此我在Google組中瀏覽了一下,我可以證明我需要爲該文件開發KML,而不是上傳直接文本文件。所以我開發了一個KML,其中我包含了「Point」標記內的經度和緯度。

所以我融合表由,

timestamp id col2 #col2 is a point type consisting of long, lat pair 

,我可以玩弄了一下週圍,並編寫JavaScript來繪製一個圓,在它吞沒點。該腳本如下。

<!DOCTYPE html> 
<html> 
<head> 
<title>csv2kml - Google Fusion Tables</title> 
<style type="text/css"> 
html, body, #googft-mapCanvas { 
    height: 500px; 
    margin: 0; 
padding: 0; 
width: 600px; 
} 
#googft-legend{background-color:#fff;border:1px solid #000;font-family:Arial, sans-  serif;font-size:12px;margin:5px;padding:10px 10px 8px;}#googft-legend p{font-weight:bold;margin-top:0;}#googft-legend div{margin-bottom:5px;}.googft-legend-swatch{border:1px solid;float:left;height:12px;margin-right:8px;width:20px;}.googft-legend-range{margin-left:0;}.googft-dot-icon{margin-right:8px;}.googft-paddle-icon{height:24px;left:-8px;margin-right:-8px;position:relative;vertical-align:middle;width:24px;}.googft-legend-source{margin-bottom:0;margin-top:8px;}.googft-legend-source a{color:#666;font-size:11px;} 
</style> 

<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"> </script> 

<script type="text/javascript"> 
function initialize() { 
map = new google.maps.Map(document.getElementById('googft-mapCanvas'), { 
center: new google.maps.LatLng(39.9100, 116.4000), 
zoom: 14, 
mapTypeId: google.maps.MapTypeId.ROADMAP 
}); 

layer = new google.maps.FusionTablesLayer({ 
map: map, 
heatmap: { enabled: false }, 
query: { 
select: "col2", 
from: "1D_ZXsYLX20yvYZHBB20_VmSi5haJA5Q65kNML1M", 
where: "ST_INTERSECTS(col2, CIRCLE(LATLNG(39.9100, 116.4000), 500))" 
}, 
options: { 
styleId: 2, 
templateId: 2 
} 
}); 
//var lay=layer; 
layer.setMap(map); 

    // Create a map circle object to visually show the radius. 
    var circle = new google.maps.Circle({ 
     center: new google.maps.LatLng(39.9100, 116.4000), 
     radius: 500, 
     map: map, 
     fillOpacity: 0.2, 
     strokeOpacity: 0.5, 
     strokeWeight: 1 
    }); 
    // Update the radius when the user makes a selection. 
    google.maps.event.addDomListener(document.getElementById('radius'), 
     'change', function() { 
      var meters = parseInt(this.value, 10); 
      layer.setOptions({ 
      query: { 
       select: 'col2', 
       from: "1D_ZXsYLX20yvYZHBB20_VmSi5haJA5Q65kNML1M", 
       where: 'ST_INTERSECTS(col2, ' + 
        'CIRCLE(LATLNG(39.9100, 116.4000), ' + meters + '))' 
      } 
      }); 
      circle.setRadius(meters); 
     }); 

} 

google.maps.event.addDomListener(window, 'load', initialize); 
</script> 
</head> 

<body> 
<div id="googft-mapCanvas"></div> 
<select id="radius"> 
     <option value="500">500 meters</option> 
     <option value="1000">1000 meters</option> 
     <option value="1500">1500 meters</option> 
     <option value="2000">2000 meters</option> 
     <option value="2500">2500 meters</option> 
    </select> 
</body> 
</html> 

現在,我想在網頁上的那個圓圈打印點的ID。請注意,圓的半徑不斷變化,因爲我給出了一個下拉,這意味着我要顯示的文本也將發生變化。我該怎麼做呢?現在,我在融合表中導入了一個出租車文件,所以id在融合表中保持不變。但是我會對幾個出租車文件進行一些處理,這可能會導致表格合併,所以這些id將會有所不同。現在我該如何檢索出租車的id並在該網頁上顯示?

任何建議/幫助,歡迎

謝謝:)

回答

0

你有2個選擇:

  1. 使用GViz(查詢限制:500行)example(使用表的副本,有點無聊,所有點都有相同的ID)
  2. 使用Fusion Tables API v1.0 example(使用與上面相同的表副本,所有點具有相同的ID)

code samples

+0

謝謝謝謝這麼多:) – user2179627