缩放到搜索框中的边界框。选择此处的地图和地点

时间:2013-09-16 07:46:37

标签: javascript zoom here-api search-box

我正在使用 nokia.places.widget.SearchBox 以及 nokia.maps.map.Display

当用户从结果列表中选择项目时,您可以使用SearchBox的onSelect功能执行操作。

我需要做的是将地图居中并缩放到拾取的地方。我的问题是关于缩放,因为我不知道使用什么级别。

我注意到有些地方有boundingBox(用于Display组件的 zoomTo 功能)但其他地方没有。我可以使用类别('administrative-region''street-square'等),但它不是精确的,而且我找不到列表可能的类别代码。

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

要在选择建议时让地图移动/缩放到某个位置,您需要实现onResults处理程序:

var fromSearchBox = new nokia.places.widgets.SearchBox({
    targetNode: "fromSearchBox",
    template: "fromSearchBox",
    map: map,
    onResults: function (data) {
        // Your code goes here //

    }
});

您注意到data字段可能包含也可能不包含边界框。这是因为只有少数几个地区覆盖定义的区域,大​​多数是地址。

对于具有边界框的子集,您可以执行以下操作:

if (data.results.items[0].boundingBox){
    map.zoomTo(data.results.items[0].getBoundingBox());
}

对于其余部分,答案将取决于您要实现的目标,但您可以尝试以下任何一项:

  • 移动到地图上的位置而不更改缩放。 (即让用户决定)

    map.set("center", data.results.items[0].position);
    
  • 移动到指定的点对象框中的点对象 指定地点。

    var obj = new nokia.maps.map.StandardMarker(startPoint);
    map.zoomTo(obj.getBoundingBox());   
    

或者:map.zoomTo(nokia.maps.geo.BoundingBox.coverAll([startPoint]));

  • 定义一个围绕点位置的边界框,然后缩放到该位置

    startPoint =data.results.items[0].position;
    bottomLeft = new nokia.maps.geo.Coordinate(startPoint.latitude - 0.1,
             startPoint.longitude + 0.1);
    topRight = new nokia.maps.geo.Coordinate(startPoint.latitude + 0.1,
             startPoint.longitude - 0.1);
    map.zoomTo(nokia.maps.geo.BoundingBox.coverAll([topRight, bottomLeft]));
    

此外,Display.zoomTo()还可以使用其他参数,因此如果您使用map.zoomTo(BoundingBox, true),您还会在屏幕上保留地图的当前中心,这可能会为用户提供更多上下文。< / p>