0

好吧,我有一个 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正如你们在图像中看到的那样。正常的红色标记是那些超出所有三角形边界的停止点。而那些经过编辑的图像是某个三角形边界内的停止点。

我已经尝试了很多东西......现在我要打印每个三角形的中心,看看它是否在它必须在的位置。

4

1 回答 1

0

解决了路线25米后使用25米圈的问题。现在我可以让用户设置半径,它会吸引所有人。

于 2012-11-05T12:29:12.373 回答