0

提前感谢您提供的任何帮助!我已经查看了几个示例站点,但我无法找到与我想要在我的网站上完成的代码相匹配的版本(Ruby on Rails,2.3.15、1.8.7。)

我的目标:

在我的网站上,我有一个工具可以让用户创建行车路线。我的目标是让用户在加载地图之前选择单击“显示附近的兴趣点”复选框。如果他这样做了,我希望地图显示沿途的 POI。

我在哪里

我已经实现了 RouteBoxer,我认为这是沿路线查找兴趣点的最佳选择。Routeboxer 为我工作;它在我创建的任何路线周围绘制框。然而,这就是我卡住的地方。我刚刚得到了我的路线和屏幕上的一堆框。我如何才能真正从 RouteBoxer 获得纬度和经度界限?那么,如何通过 RouteBoxer 传递我的数据?

细节

我有一个名为“myinfo”的 MySQL 数据库和一个名为“masterlocations”的表。每个位置都有一个“ID”、“Lat”、“Long”、“nickname”和其他信息。

在我的地图网页控制器中,我玩了一圈,发现我可以通过硬编码纬度和经度来获得位置列表。测试看起来像这样:

@nearbylocations = Masterlocation.find(:all, :conditions => ["latitude > 25 AND latitude < 30"], :order => ['nickname asc'])

下一步/建议

我想我需要弄清楚 RouteBoxer 多边形的纬度和经度,然后以某种方式查看我的任何位置是否在这个纬度和经度范围内。如果他们这样做,那么我需要找出一种方法,以便 API 为 POI 创建标记。

您对我如何完成上述工作有什么建议吗?我对 Ruby 和 Google Maps API V3 都很陌生,如果我忽略了一个明显的方法,我很抱歉。您可以提供/链接到的任何细节或代码都会很棒!感谢你的宝贵时间!

4

1 回答 1

0

你首先从路由器盒子 var boxes = routeBoxer.box(path, distance);

一个盒子只是一系列纬度/经度

for (var i = 0; i < boxes.length; i++) {

 var northeast = boxes[i].getNorthEast();
 var southwest = boxes[i].getSouthWest();
 var lat_north = northeast.lat();
 var long_east = northeast.lng();

 var lat_south = southwest.lat();
 var long_west = southwest.lng();
...

现在您已经有了框边界(构成它的纬度/经度),您可以循环遍历所有点以查看它们是否位于该框内。检查这只是一个简单的“这个点是否位于这个矩形中”算法(如果 box.left 和 box.right 之间的 point.x 和 box.top 和 box.bottom 之间的 point.y )

所以总结一下循环框{循环坐标{}}

当然,这只是开始......这是一种“蛮力”方法,其中每个点都针对每个框进行检查,并且根据您的路线和框的数量,这可能会导致大量排列。使用各种算法都有很大的改进空间。这是我做这个练习的有趣部分——使用这个或那个;做服务器端或客户端...选择...玩得开心...

于 2013-10-04T21:39:30.567 回答