【发布时间】:2015-06-22 19:32:11
【问题描述】:
我正在尝试让 Google Maps Javascript API 从 JSON 中获取点并使用 computeOffset() 函数来计算左右点,以便我可以使用多边形绘制路径。我当前的代码似乎只是在制作奇怪的形状,而不是从点到点建立干净的多边形连接。
我将 var lastPoint 定义为 jQuery $.each 循环中的 lastPoint,这样当查询转到下一个 lat lng 值时,多边形将连接到前一个点。我得到了奇怪的形状,而不是从点到点的漂亮方形多边形,主要是三角形而不是正方形。
$.getJSON('sixth.json', function(data) {
var lastPoint;
var myLatlng2;
var polyShape;
$.each( data.contactdetails, function(i, value) {
myLatlng2 = new google.maps.LatLng(value.lat, value.lng);
var boomwidth = value.boomwidth;
var bear = value.bear;
var boomconversionfactor = 1;
//computeOffset returns a LatLng position by using the bearing and number of feet to return another location
var point1 = google.maps.geometry.spherical.computeOffset(myLatlng2, (0.30480 * boomwidth * boomconversionfactor) / 2, bear + 90);
var point2 = google.maps.geometry.spherical.computeOffset(myLatlng2, (0.30480 * boomwidth * boomconversionfactor) / 2, bear - 90);
var point3 = google.maps.geometry.spherical.computeOffset(myLatlng2, (0.30480 * boomwidth * boomconversionfactor) / 2, 90 + bear);
var point4 = google.maps.geometry.spherical.computeOffset(myLatlng2, (0.30480 * boomwidth * boomconversionfactor) / 2, bear - 90);
if (lastPoint !== undefined){
var point1 = google.maps.geometry.spherical.computeOffset(lastPoint, (0.30480 * boomwidth * boomconversionfactor) / 2, bear + 90);
var point2 = google.maps.geometry.spherical.computeOffset(lastPoint, (0.30480 * boomwidth * boomconversionfactor) / 2, bear - 90);
}
var Coords = [point1,point2, point3, point4];
// Construct the polygon.
polyShape = new google.maps.Polygon({
paths: Coords,
strokeColor: '#FF0000',
strokeOpacity: 0.8,
strokeWeight: 2,
fillColor: '#FF0000',
fillOpacity: 0.35
});
polyShape.setMap(map);
//assign lastPoint the lat lng value from the jQuery loop. Trying to connect previous position to next by placing the lastPoint outside the loop.
lastPoint = myLatlng2;
}); //close of .each jQuery loop
});
这是 json 包含的内容。当我使用警报或带有标记的绘图时,位置会正确显示在地图上。
这是一张图片。我得到了这些三角形的碎片,而不是干净地关闭多边形。
【问题讨论】:
-
second.json中的数据是什么? (或将显示问题的示例数据......) -
@geocodezip 我已经把json的内容放在上面了。谢谢
-
将这些红线放入一个多边形中会形成一个看起来很奇怪的多边形。你真正想做什么?
-
@geocodezip 这些点可能不是一个很好的表示。基本上我采用 lat lng 值,计算左右偏移(以突出显示对象移动的宽度),然后在该区域中关闭到下一个点。更好的 lat lng 数据样本将是一条路径,但无论如何我似乎无法获得点之间的区域来填充多边形。
-
@geocodezip 我已经放置了一个更好的点样本,我试图用多边形为其创建路径。我已经包含了一个指向上面 JSON 源的链接。我需要使用多边形,因为与 Google Maps Spherical 工具的 computeOffset() 方法结合使用是突出显示与输入宽度完全相同的区域的唯一方法。在大多数情况下,这将在乡村越野中使用,以在设备来回移动时跟踪我的设备在现场的宽度和覆盖范围。
标签: javascript jquery google-maps