好吧,我有一个 Google Maps 实例,其中有一个 TraceHandler。这让用户可以按城市地图制作线条。通过这些行,我使用 google DirectionsRoute 服务生成路线。该服务返回各种信息,例如 *overview_path。包含我路线中所有方向的变化。有了这些点,我创建了如下三角形:
var triangle;
for (var indexerTrian = 0; indexerTrian < self.bounds.length; indexerTrian++) {
if (indexerTrian + 1 == self.bounds.length) break;
var maxLng = self.bounds[indexerTrian].lng() < self.bounds[indexerTrian + 1].lng() ? self.bounds[indexerTrian].lng() : self.bounds[indexerTrian + 1].lng();
var minLng = self.bounds[indexerTrian].lng() > self.bounds[indexerTrian + 1].lng() ? self.bounds[indexerTrian].lng() : self.bounds[indexerTrian + 1].lng();
var latLngSouthWest = new gMap.LatLng(self.bounds[indexerTrian].lat(), maxLng);
var latLngNorthEast = new gMap.LatLng(self.bounds[indexerTrian + 1].lat(), minLng);
triangle= new gMap.LatLngBounds(latLngSouthWest, latLngNorthEast);
self.triangles.push(triangle);
}
该例程的第三部分使用这些三角形在路线中引入点。一些代码:
//for each point
for (var i in result.page) {
stopPoint = result.page[i];
latLng = new gMap.LatLng(stopPoint.latitude, stopPoint.longitude);
//for each triangle
for (var iTrian = 0; iTrian < self.triangles.length; iTrian++) {
//this guy verify if the stopPoint is inside the triangle.
//if so. Drop it on map
if (self.triangles[iTrian].contains(latLng)) {
//this method just generate a Marker instance.
self.SetaMarkers(latLng, iconMarker, stopPoint.descricao, true);
counter++;
break;
}
//this is a DEBUG if who prints all points if my loop comes to
//end
else if ((iTrian + 1) == self.triangles.length) {
self.SetaMarkers(latLng, null, stopPoint.descricao, true);
//break;
}
}
}
这很好用。执行时没有错误。但是对于那些我改变 de Longitude 的三角形,它们的.contains不起作用。这可能是一个错误。
这是要演示的图像。我正在打印要调试的三角形:http ://s7.postimage.org/ek3prgryj/Map.png正如你们在图像中看到的那样。正常的红色标记是那些超出所有三角形边界的停止点。而那些经过编辑的图像是某个三角形边界内的停止点。
我已经尝试了很多东西......现在我要打印每个三角形的中心,看看它是否在它必须在的位置。