我使用从A点到B点的路线渲染地图,并缩放到路线的边界框。
我还为点B(目的地)渲染了一个相关的信息泡泡。 我的应用程序的这个特定部分不涉及用户干预,因此完全无人值守 地图也会打印出来 B点总是不同的 使用Enterprise Javascript API v2.5.4
我的问题是,很多时候信息气泡覆盖了阻碍路线的路线折线。
我看到左下方,上方,下方的InfoBubble对齐选项,但由于这些点是动态的,这些选项无效
有关信息泡泡定位的任何建议,以确保它不会覆盖路线?
答案 0 :(得分:1)
defaultXAlignment
和defaultYAlignment
属性可用于设置InfoBubble的首选位置。
您可以使用defaultXAlignment
和defaultYAlignment
属性来更改Infobubble
的首选偏移量,例如:
var infoBubbles = new nokia.maps.map.component.InfoBubbles();
infoBubbles.options.set("defaultXAlignment",
nokia.maps.map.component.InfoBubbles.ALIGNMENT_RIGHT);
infoBubbles.options.set("defaultYAlignment",
nokia.maps.map.component.InfoBubbles.ALIGNMENT_ABOVE);
map.components.add(infoBubbles);
在你的情况下,我会建议如下。
缩放到路径的bounding box
时,添加填充因子以确保有空间显示infoBubble。最简单的方法是缩小一个停止点,但您可以使用padding
的{{1}}属性来确保在nokia.maps.map.Display
时有足够的空间。看到
nokia.maps.map.Display.setPadding()
然后计算起点和终点之间的承载:
zoom()
如果结果介于0和Number.prototype.toRad = function() {
// convert degrees to radians
return this * Math.PI / 180;
}
function bearing(lat1, lon1, lat2, lon2) {
lat1 = lat1.toRad(); lat2 = lat2.toRad();
var dLon = (lon2-lon1).toRad();
var y = Math.sin(dLon) * Math.cos(lat2);
var x = Math.cos(lat1) * Math.sin(lat2) -
Math.sin(lat1) * Math.cos(lat2) * Math.cos(dLon);
return Math.atan2(y, x);
}
之间,那么您正在东北修复Infobubble以显示在右侧和上述强>
Math.PI/2
和Math.PI/2
之间,您正在旅行东南,请修复Infobubble以显示在右侧和以下即可。Math.PI
和-Math.PI
之间,您正在旅行西南,请修复Infobubble以显示在左侧和以下即可。-Math.PI/2
和0之间,则您正在西北修复信息,以便在左侧和上方显示强> 您可以找到有关完全修复-Math.PI/2
答案here