Google地图:查找路线

时间:2015-07-30 09:03:45

标签: google-maps google-maps-api-3

根据两个位置,您可以在Google地图中计算路线。

  1. 是否可以找到路线上的所有邮政编码?
  2. 根据邮政编码,我可以轻松地在10公里范围内扩展该区域并找到该区域的所有邮政编码吗?
  3. 我应该使用哪些方法来获取此信息?欢迎使用教程。我不需要一个完整的工作解决方案,尽管如果有一个非常好。

1 个答案:

答案 0 :(得分:1)

您需要一个包含邮政编码(ZCTA)多边形的数据源。一个可能的来源是this FusionTable

proof of concept

proof of concept showing ZCTA polygons

注意:由于它在沿着路线的每个点查询邮政编码,因此完成路线的时间越长,需要更长的时间。

执行查询的代码(使用Google Visualization API):

function queryForZip(latlng) {
  //set the query using the current latlng
  var queryStr = "SELECT geometry, ZIP, latitude, longitude FROM "+ tableid + " WHERE ST_INTERSECTS(geometry, CIRCLE(LATLNG"+latlng+",1))";   
  var queryText = encodeURIComponent(queryStr);
  var query = new google.visualization.Query('http://www.google.com/fusiontables/gvizdata?tq='  + queryText);

  //set the callback function
  query.send(addZipCode);
}  

function addZipCode(response) {
if (!response) {
  alert('no response');
  return;
}
if (response.isError()) {
  document.getElementById('status').innerHTML += 'Error in query: ' + response.getMessage() + ' ' + response.getDetailedMessage()+"<br>";
  return;
} 
  FTresponse = response;
  //for more information on the response object, see the documentation
  //http://code.google.com/apis/visualization/documentation/reference.html#QueryResponse
  numRows = response.getDataTable().getNumberOfRows();
  numCols = response.getDataTable().getNumberOfColumns();
  for(i = 0; i < numRows; i++) {
      var zip = response.getDataTable().getValue(i, 1);
      var zipStr = zip.toString()
      if (!zipcodes[zipStr]) {
        zipcodes[zipStr] = zipStr;
        document.getElementById('zipcodes').innerHTML += zipStr+"<br>";
      }
  }
}