问题标签 [kml]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2151 浏览

asp.net - 需要关于必须显示 250 000 条折线的 Google 地图应用程序的指导

我正在为我正在开发的使用 Google 地图的应用程序寻找建议。

摘要: 用户具有用于搜索满足条件的街道段的条件列表。街道段将用 3 种颜色着色,以显示低于平均水平、平均水平和高于平均水平的街道。然后用户单击街道段以查看显示该特定段的属性的信息窗口,隐藏未选择的那些,直到他/她关闭窗口并且其他折线再次变得可见。这看起来很像孩之宝几个月前制作的 Monopoly City Streets 游戏,不同之处在于我不使用 Flash,我不能使用 Open Street Map,因为它没有列出街道段(如果这样做,ID 将不是无论如何都一样),我不必展示谷歌草图。

信息: 我有一个包含 ID、折线点和质心的街段数据库。该数据库中有 6,000,000 条街段记录。为了稍微缩小生成的数据,我们关注城市。我们必须展示的最大城市有 250,000 个街道段。这意味着要显示 250,000 条线段折线。

我们最长的折线使用 9600 个字符,存储在 SQL Server 2008 中的两个 8000 varchar 列中。

我们需要使用 API v3,因为它比 API v2 更快,并且应用程序将被移植到 iPhone。目前它是一个带有 SQl Server 2008 应用程序的 ASP.NET 3.5。性能是重中之重。

问题: 大多数执行此操作的演示项目都是使用 API v2 制作的。因此,除了 Google API v3 参考页面上的教程之外,我没有什么可以比较性能或技术使用来实现我的目标。API v3 还没有可用的 .NET 包装器。

生成 250,000 条线段折线会创建一个需要时间来传输和解析的重文件。(我发现了一条包含 390,000 个点的折线的演示。我认为编码器的效率会低得多,因为折线越多,点越少,因为舍入会更少。)由于街道段是根据标准显示的,因此必须动态创建折线并且无法使用缓存。

一些想法:

公里/公里:

优点: 因为它是一个标准,我们可以轻松加载 Bing 地图,Yahoo!地图、谷歌地图、谷歌地球,使用相同的 KML 文件。数据生成将是相同的。

缺点: KML 中的 LineString 不能像 Google 地图 API 可以处理的那样编码折线。所以它可能会更大,显示更慢。压缩文件的大小需要更多的处理时间,并且需要客户端解压缩数据,我不太确定 iPhone 将如何处理 250,000 个数据以及服务器如何处理同时浏览的 40 个用户。

JavaScript 文件:

优点: JavaScript 文件可以具有编码的折线,并且会显着减少要传输的文件。

缺点: 必须创建我自己的 API v3 剥离版本来添加叠加层、创建折线等。它比创建 KML 文件并指向源更复杂。

GeoRSS: 我认为这个选项不适合我的需求,但我可能是错的。

MapServer: 我看到一些帖子建议使用 MapServer 生成叠加层。不太确定与我们的数据库的连接以及它将提供的性能。另外,它需要一个用于生成 KML 的插件。在我看来,它不会让我比创建自己的 KML 或 JavaScript 文件做得更好。如果没有,维护会更简单。

垄断城市街道: 游戏现在结束了,但是对于那些知道我在说什么的人来说,垄断城市街道以最大缩放级别仅显示质心位于窗口边界内的街道。移动地图是向服务器发送请求以显示新街道。虽然我认为这很巧妙,但我不知道如何实现类似的东西。我唯一想到的就是比较 long 是否在地图区域 X 的范围内并且与 Y 相同。虽然这可以在高缩放级别下显着提高性能,但在显示整个城市时这将无济于事。

聚类: 虽然聚类对于标记来说很棒,但似乎我们不能聚类折线。我会喜欢MarkerClusterer 之类的折线,并且能够通过我的 3 种折线颜色进行聚类。这可能会保留为“本来会很棒但忘记它”。

箭头: 我将在未来的版本中显示多段线的方向,并且必须在质心处显示一个箭头。加载图像或标记只会使我的数据翻倍,因此创建自定义叠加层可能是我唯一的选择。我找到了我想要实现的类似的演示。不幸的是,演示非常慢,但我只希望每条折线显示 1 个箭头,而不是像演示那样多。此功能将取决于数据格式,因为我认为 KML 不支持自定义覆盖。

标准: 虽然应用程序是使用 ASP.NET 3.5 完成的,但 iPhone 的端口不会使用 Web 来显示应用程序,并且在选择标准时会受到屏幕大小的限制。这就是为什么我更倾向于基于传入参数的标准生成文件的服务或页面。该服务将生成我需要在地图上显示折线的文件。我还可以创建一个 aspx 页面来执行此操作。aspx 页面比服务方式更有文档记录。应该是有原因的。

问题:

  • 我应该创建一个 Web 服务来返回街道段文件还是创建一个返回该文件的 aspx 页面?
  • 基于最大经度/纬度折线有 9600 个字符并且我必须渲染最大 250,000 条线段折线这一事实,我应该创建一个带有编码折线的 JavaScript 文件还是带有经度/纬度的 KML。或者我应该使用生成覆盖的 MapServer 吗?
  • 我能否在下一个版本的折线上显示简单的箭头。
  • 在 KML 生成的情况下,使用XDocumentXmlDocumentXmlWriter手动创建文件是否更快,或者只是序列化流中的街道段?

这更像是一个头脑风暴的堆栈溢出问题,而不是一个实际的代码问题。任何有助于缩小可能性的答案都与拥有所有知识的人一样好,可以为我指出更好的选择。

0 投票
1 回答
774 浏览

php - GXml 是否适用于 KMZ 文件?

Google Map API GXml 可以直接解析 .kmz 文件吗?如果不是,将 .kmz 文件转换为 .kml 的最佳方法是什么?.kmz 文件存储在数据库中,PHP 代码用于检索它。

0 投票
2 回答
501 浏览

kml - 带有经度大于 180 度的多边形的 Google 地球 KML?

我在 kml 文件中使用多边形来在谷歌地球 kml 文件中显示火箭从地面到轨道的飞行路径。

问题是,谷歌地球无法处理大于 180 度的经度,因此当火箭绕地球飞行时,必须重新计算经度值。有没有办法使用像 720deg 这样的经度,谷歌可以自己翻译这个?我更喜欢这个,因为我不需要改变我的程序,你可以通过它的坐标直接看到火箭绕地球的转数。

0 投票
2 回答
3508 浏览

javascript - 如何从 GGeoXml 对象中获取 KML 数据

我使用以下代码将 KML 文件加载到谷歌地图对象中:

我想从 KML 文件中读取地标并将它们显示在列表中。我知道我需要的信息正在传输到浏览器,但我不知道如何访问它。

0 投票
2 回答
7839 浏览

jquery - 谷歌地图时间轴滑块

我可以采用多个 KML 文件(每个文件代表不同的日期)并使用滑块创建谷歌地图的最佳方式是什么?

0 投票
2 回答
12494 浏览

google-maps - 用于驾车和步行路线的 Google Maps HTTP API

您知道我如何通过提供两个特定坐标从 Google 获取步行路线吗?如何发送简单的 HTTP GET 请求并将结果保存在 KML 文件中?

我不想进行地理编码,而是将行车路线作为此方法返回的 KML 文件获取:

http://www.gringod.com/2008/02/26/save-google-maps-driving-directions/

0 投票
2 回答
2753 浏览

iphone - CLLocationManager Simulator 模拟汽车移动?

很长一段时间以来,我一直在寻找类似CLLocationManager模拟器的东西,它可以让我沿着预定义的路线模拟 GPS 位置(CLLocation可以通过标准委托机制检索的实例)(使用KMLGPX文件作为输入,或者无论如何,但 KML 会很好;)。CLLocationManager

Android 模拟器上有类似的东西,我想知道 iPhone 模拟器是否存在类似的东西。至少这会很棒,并且可以加快模拟器上的测试速度,而不必真正开车......:/

如果不存在这样的情况,您将采取什么方法来伪造此类行为并以不影响客户端的方式实施模拟器?CLLocationManager(例如,委托中没有代码更改。)

感谢您的链接、提示、方法...

0 投票
2 回答
21744 浏览

json - 将 JSON 转换为 KML

您知道如何将 Google 步行路线 JSON 响应转换为 KML 吗?

我正在使用这种方法以 JSON 格式从 Google 获取行车路线:

如何处理并将其导出到 KML 以在 Google 地球上查看?是否有 Java API 或其他东西?

0 投票
4 回答
9673 浏览

android - 如何为 Android Emulator Control 准备 KML 文件?

我正在尝试使用位置信息测试我的应用程序。您知道 Emulator Control 能够从 KML 文件加载。(Eclipse -> DDMS -> Emulator Control -> Location Controls -> KML -> Load KML ...)我已经使用 Google 地球应用程序及其“添加路径”准备了 KML 文件。然后通过 .kml 扩展名保存它并在 Eclipse 上加载它。Eclipse 没有加载这个 KML 文件。

如何为 Android Emulator Control 准备 KML 文件?

0 投票
1 回答
5014 浏览

kml - 嵌套 KMZ 文件

是否可以创建一个由多个较小的 KMZ 文件组成的 KMZ 文件?我宁愿不必手动合并实际的 KML 实体,但如果这是唯一的选择,我会这样做。