【问题标题】:Can I limit a map to only search within the bounds of a Google Maps Fusion Layer?我可以将地图限制为仅在 Google Maps Fusion Layer 范围内搜索吗?
【发布时间】:2014-04-26 04:32:06
【问题描述】:

我想知道是否可以将我的地图搜索限制为仅返回位于我的图层范围内的位置?

我知道您可以创建一个 bounds 对象,然后使用它来检查您搜索的内容是否在其中,但我不知道如何正确实现它并阻止地图在全球范围内移动到错误的位置。

如果我搜索一个邮政编码扇区(即在我的融合表/图层中),就会出现问题,有时它会将我带到中国的一条名称与邮政编码扇区相同的高速公路(例如“G1”)。 我可以理解谷歌是否设置了优先查找具有该名称的位置而不是我的融合表,但是如果我搜索“G84”,它将显示我的表/图层中的正确区域,所以它让我认为它正在寻找先上桌却把优先权分配到了错误的地方?

这是我的代码的 JSFiddle,我已经从我的代码中添加了所有内容,但我无法在此处显示地图:http://jsfiddle.net/3U4Vd/10/

function initialize() {
var tableId = '1S0FCMn-wGr2zy6SrAnre6HNF_KghfZmObb4sNLc';
var geocoder = new google.maps.Geocoder();
map = new google.maps.Map(document.getElementById('map-canvas'), {
    center: new google.maps.LatLng(55.864237, -4.2518059999999880),
    zoom: 13,
    mapTypeId: google.maps.MapTypeId.ROADMAP
});

layer = new google.maps.FusionTablesLayer({
    query: {
        select: "col40>>0",
        from: '1S0FCMn-wGr2zy6SrAnre6HNF_KghfZmObb4sNLc'
    },
    map: map,
    styleId: 2,
    templateId: 2
});
}

这是我最初加载的地图和图层。

【问题讨论】:

  • 感谢您解决这个问题!你能告诉我我的版本有什么问题吗?
  • 基本的变化是在用户界面左上角的第二个下拉菜单中,我将选择从onload 更改为no wrap - in <body/>
  • 太棒了,非常感谢!!

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


【解决方案1】:

您可以在请求中额外添加一个 bounds-property(表中所有特征的边界),然后地理编码器将优先选择这些边界内的结果。

示例代码:

 geocoder.geocode({
        address: address,
        bounds: new google.maps.LatLngBounds(
                     new google.maps.LatLng(55.661031, -4.893133), 
                     new google.maps.LatLng(56.365728, -3.865911))
    },
    function(){
      //some code
    }
  );

演示:http://jsfiddle.net/doktormolle/JLC4F/

【讨论】:

  • 这正是我一个多星期以来一直在尝试做的事情!非常感谢,非常感谢您的帮助!
猜你喜欢
  • 1970-01-01
  • 2011-04-23
  • 1970-01-01
  • 2017-07-28
  • 2023-03-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多