融合表查询:从外部链接放大标记

时间:2013-01-23 22:24:59

标签: javascript google-maps google-fusion-tables

我正在尝试在Google融合地图中创建从文本到标记的链接。更准确地说,我希望地图能够刷新和缩放所选的位置。

图片更容易理解: http://projeteurope.free.fr/ 例如,如果单击页面右侧的“Akrame”,地图应放大点(融合表中已存在,并且是19 Rue Lauriston,75016 Paris)

我看了不同的主题和网站,但我不明白该怎么做(我是javascript的初学者) Fusion Table + Google Mapshttp://alamatku.com/cari?query=UPS&area=jakartaGoogle Fusion Tables With Maps - Link Table field to Map Info Window

我只是希望地图可以放大特定的市场,而不是仅使用标记来创建新图层。

非常感谢你有任何线索! 罗宾

1 个答案:

答案 0 :(得分:0)

您可以使用GViz (the google visualization library)查询融合表并缩放标记上的地图。

CODE:

function changeQuery(term) {
  layer.setOptions({query:{select:'Latitude', /* was 'Latitude,Longitude', used to work... */
                           from:FT_TableID,
                           where:"Nom contains "+term
                           }

 });

  // zoom and center map on query results
  //set the query using the parameter
  var queryText = encodeURIComponent("SELECT 'Latitude', 'Longitude' FROM "+FT_TableID+" WHERE 'Nom' contains '"+term+"'");
  var query = new google.visualization.Query('http://www.google.com/fusiontables/gvizdata?tq='  + queryText);

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

function zoomTo(response) {
if (!response) {
  alert('no response');
  return;
}
if (response.isError()) {
  alert('Error in query: ' + response.getMessage() + ' ' + response.getDetailedMessage());
  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();

  var bounds = new google.maps.LatLngBounds();
  for(i = 0; i < numRows; i++) {
      var point = new google.maps.LatLng(
          parseFloat(response.getDataTable().getValue(i, 0)),
          parseFloat(response.getDataTable().getValue(i, 1)));
      bounds.extend(point);
  }
  // zoom to the bounds, if you have only one result, 
  // you may want to do a map.setCenter; map.setZoom to specify the behavior
  map.fitBounds(bounds);
}

example/proof of concept