让所有街道在 Google 地图视口中可见

2024-07-04

我正在尝试使用以下算法构建地图:

  1. 等待平移或缩放发生。
  2. 查询视口中可见的所有街道(范围)。
  3. 使用预定义的颜色为每条可见街道着色。

Example:
我想显示每条街道上的企业数量,或者每条街道上发生的犯罪数量。
我有一个数据库,其中包含此类信息(街道名称、数据),但每一行没有位置数据。
因此,在每次地图缩放或平移之后,我无法通过地理边界矩形查询所有地图,使用 Google 自己的数据库并通过街道名称查询会更有效。

我知道如何注册平移和缩放事件。
我知道怎么做计算视口坐标 https://stackoverflow.com/questions/2393531/calculating-google-maps-viewport.
我知道怎么做给一条街道上色 https://stackoverflow.com/questions/13310776/google-maps-api-is-it-possible-to-highlight-specific-streets.

如何获取视口中可见的所有街道的列表?
欢迎任何其他解决方案或架构。 首选解决方案不会使用 Google DirectionsService 或 DirectionsRenderer,因为它们会减慢地图速度。


我的理解是,你所问的问题在 Google API 中是不可能的。多边形内的反向地理编码不是他们提供的服务。其他网站上有一些帖子(例如https://gis.stackexchange.com/questions/22816/how-to-reverse-geocode-without-google https://gis.stackexchange.com/questions/22816/how-to-reverse-geocode-without-google)与参考gisgraphy.com http://www.gisgraphy.com/看起来像一个非常简洁的反向地理编码工具。

然而,这仍然不能解决多边形问题中的所有街道。我think你唯一的选择就是获取数据(打开街道地图 http://www.openstreetmap.org/)并自己编写代码。此外 - 如果您要在大面积上执行此操作,我会采用我在这里推荐的网格方法:https://stackoverflow.com/a/18420564/1803682 https://stackoverflow.com/a/18420564/1803682

我将创建网格元素,并为每条街道计算它所属的所有网格并将其存储在数据库中。然后,当您搜索多边形时,您将计算多边形重叠的所有网格,然后可以测试每个正方形中的道路数据子集以确定重叠。

我对此进行了研究,并在几个月前放弃了类似的要求,但仍然希望实现它。多边形工作中的大部分点/线都发生在我的应用程序中创建的数据(即不是街道数据)上,现在这是我将包含的唯一数据。我想说的是——我希望有人能给你更好的答案。

Update:

对于你所问的问题,我仍然相信你需要混合使用基于 OpenStreetMap 的你自己的数据库和预先进行的某种网格分析。如果您有一些时间致力于该项目,那么处理起来应该不会太糟糕。数据库将会很大,并且所需的计算可能需要大量的一次性/前期处理时间。至于在视口中突出显示路线/道路/任何内容,有很多方法可以使用 API 来完成此操作 - 这里的示例我发现很有用:使用谷歌地图 API v3 折线捕捉到道路 https://stackoverflow.com/questions/10513360/polyline-snap-to-road-using-google-maps-api-v3

也有用:http://econym.org.uk/gmap/snap.htm http://econym.org.uk/gmap/snap.htm

请注意,如果使用方向 api 捕捉街道,单向街道可能会带来一些麻烦,您可能需要注意这一点并纠正或反转起点/终点。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

让所有街道在 Google 地图视口中可见 的相关文章

随机推荐

  • 在Java中,如何在TextArea中使用多线程?我需要同步我的线程吗?

    我对 Java 和多线程缺乏经验 所以也许你们可以提供帮助 当我使用多线程时 我在打印 TextArea 框中的一系列数字和字母时遇到问题 这是我的代码 public class MultiThread extends Applicatio
  • 如何动态指定 OmniAuth 要求的 Facebook 权限(又名范围)?

    这个问题类似于使用 OmniAuth 时 如何指定用户的 Facebook 帐户需要哪些访问权限 https stackoverflow com questions 4062065 how can i specifiy what acces
  • 使用 Java 打开 Arduino 上的 LED

    我安装了 Java 串行 RXTX 库并正确设置了 Arduino 我什至已经启动并运行了示例代码 但我似乎无法理解如何访问不同的 Arduino 引脚以打开 LED 等 如何使用 OutputStream 或任何其他方式访问引脚 我是否需
  • 如何在自定义视图中修复捏缩放焦点?

    对于我的问题我已经准备好了一个非常简单的测试应用程序 https github com afarber android questions tree master PinchZoom在 Github 上 为了简单起见 我删除了投掷 滚动约束
  • Swift:解压缩文件

    我正在努力获得String使用本机从 zip 文件内的 txt 文件中获取libcompression图书馆 实际上我使用的代码来自 https github com mw99 DataCompression blob master Sou
  • 重复 for 循环的迭代

    如果出于某种原因我想重复相同的迭代 我该如何在 python 中做到这一点 for eachId in listOfIds assume here that eachId conatins 10 response makeRequest e
  • Java中的相似字符串比较

    我想相互比较几个字符串 并找到最相似的字符串 我想知道是否有任何库 方法或最佳实践可以返回哪些字符串与其他字符串更相似 例如 狐狸跳得很快 gt 狐狸跳了 敏捷的狐狸跳了 gt 狐狸 该比较将返回第一个比第二个更相似 我想我需要一些方法 例
  • Actionscript 3 中循环的变量声明性能

    尽管所有关于这个问题的已知博客我总是怀疑一些结果 而且我的个人测试表明 所说的标准并不是最好的 在循环内部声明变量 使它们接近其范围并使其更快地被方法访问 但分配更多内存或在循环外部声明for范围可以节省内存分配 但增加处理以在远程实例中进
  • Java:什么是“for (;;)”[重复]

    这个问题在这里已经有答案了 有人可以帮我解释一下这条指令吗 为了 我遇到过几种这样的标记 比如在 facebook 的 ajax 代码和 Java 的并发内容中 无限循环 for 循环的三个部分中的每一个部分 for x y z 是可选的
  • Android应用程序启动图标大小[重复]

    这个问题在这里已经有答案了 遵循 Google 的指南 我已将 48x48 和 72x72 启动器图标添加到我的 mdpi 和 hdpi 屏幕项目中 但在某些情况下 图标的大小会被调整 例如 在我的 Acer Iconia A200 平板电
  • 在 WCF 服务关闭之前执行操作

    我有一个托管在 IIS7 中的 WCF 服务 该服务有一个静态类 其中包含包含字符串 某种日志 的静态列表 它定期将条目写入文件或数据库 但是 当 IIS 决定回收应用程序或出于任何原因终止时 静态字段中的条目将丢失 有什么方法可以处理服务
  • 在 Bash 中使用大小写表示数字范围

    我正在尝试使用以下方法进行操作case在 Bash 中 在 Linux 中 如果X在460到660之间 则输出X信息 如果 X 介于 661 和 800 之间 请执行其他操作 Etc 现在这就是我所拥有的 case MovieRes in
  • 如何循环调用分页函数?

    我正在尝试使用空气桌API https airtable com api从我的数据中检索记录 具体来说 是我在列单元格中的 URL 列表 我写了一个函数 get airtable records 通过以下方式进行 API 调用curl它可以
  • OpenCV 2.4.6 SIFT 关键点检测使用大量内存

    我们在 openCV 2 4 3 中使用 SIFT 我们决定升级到 openCV 2 4 6 升级后 openCV 2 4 6 中的内存使用量从约 150MB 跃升至 1 2GB 有人知道这是一个错误还是我们现在需要配置的东西吗 我们的图像
  • PHP url 函数和子域

    我有一个网站thenoblesite com 它有一些子域 即 download thenoblesite com壁纸 thenoblesite com etc 子域的页面位于主 htdocs 文件夹中 即 httpdocs downloa
  • 字符串的两半就地交错

    给定一个字符串even尺寸 说 abcdef123456 我如何将两半交错 这样same字符串将变成这样 a1b2c3d4e5f6 我尝试开发一种算法 但失败了 有人能给我一些吗hints至于如何进行 我需要在不创建额外的字符串变量或数组的
  • Android CardView 不适用于 Api 21

    我正在使用安卓CardView它在 Api 21 下完美运行 但是当我在 Api 21 即 Lollipop 上使用它时 XML 属性如下cardElevation cornerRadius不起作用 我究竟做错了什么 这是我的 XML 布局
  • 如何解决“您的系统管理员已将 Chrome 配置为打开备用浏览器进行访问”

    我正在尝试在 google chrome 中打开一个应用程序 当我启动 chrome 网站时 它会重定向到 IE 并在 chrome 中显示消息 您的系统管理员已将 chrome 配置为打开备用浏览器进行访问 如何克服这个问题 Behavi
  • Socket:Python中的2路通信

    我想要在 Python 中进行双向通信 我想绑定到一个客户端可以连接的套接字 然后服务器和客户端可以彼此 聊天 我已经有了基本的监听器 import socket HOST localhost PORT 50008 s socket soc
  • 让所有街道在 Google 地图视口中可见

    我正在尝试使用以下算法构建地图 等待平移或缩放发生 查询视口中可见的所有街道 范围 使用预定义的颜色为每条可见街道着色 Example 我想显示每条街道上的企业数量 或者每条街道上发生的犯罪数量 我有一个数据库 其中包含此类信息 街道名称