我可以将地图限制为仅在Google地图融合图层的范围内进行搜索吗?

时间:2014-03-19 17:53:03

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

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

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

如果我搜索邮政编码扇区(即我的融合表/层),问题就出现了,有时它会带我到中国的一条高速公路,其名称与邮政编码部门相同(例如' G1&# 39)。 我可以理解Google是否设置优先级以首先查找具有该名称的位置而不是我的融合表但是如果我搜索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
});
}

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

1 个答案:

答案 0 :(得分:2)

您还可以在请求中添加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/