我正在使用 nokia.places.widget.SearchBox 以及 nokia.maps.map.Display 。
当用户从结果列表中选择项目时,您可以使用SearchBox的onSelect功能执行操作。
我需要做的是将地图居中并缩放到拾取的地方。我的问题是关于缩放,因为我不知道使用什么级别。
我注意到有些地方有boundingBox(用于Display组件的 zoomTo 功能)但其他地方没有。我可以使用类别('administrative-region','street-square'等),但它不是精确的,而且我找不到列表可能的类别代码。
有什么建议吗?
答案 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>