问题标签 [openstreetmap]

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 回答
2170 浏览

openlayers - 随机获取 OpenLayers.Layer.OSM.Mapnik 不是构造函数

我有一个小的弹出窗口,我正在加载用户点击页面上的链接。但大约有一半的时间,我在 firebug 的 console.log 中得到“OpenLayers.Layer.OSM.Mapnik 不是构造函数”。如果我关闭弹出窗口(这是一个 jqueryui 对话框)然后再次单击该链接,它可能不会出错。但是,如果我关闭它并再次打开它,我会再次收到错误。这很奇怪。

如果我完全刷新页面,我会在第一次单击时收到错误但关闭然后我会得到地图。

在我错过的较小窗口中加载地图有什么秘密吗?我在不同页面上的全屏版地图中没有收到错误...

这是加载地图的代码:

0 投票
4 回答
5560 浏览

android - 限制用户在 Mapview 上可以去的区域

我正在使用自定义版本的地图视图(OSMDroid 版本)。我在其中使用自定义图块,我只希望用户能够查看我拥有自定义图块的区域。有没有办法设置边界纬度,所以当他们平移地图时它不会越过这些边界?

0 投票
1 回答
121 浏览

google-maps - Google IO 会议地图之类的本地存储版本?

Google IO 2010 有一个漂亮的“交互式会议地图”: http ://www.google.com/events/io/2010/map/#level1

注意覆盖和有用的布局。它也适用于移动设备。

我想做同样的事情,但不是每次平移或缩放 GMaps 都加载新的图块,而是希望预先缓存所有图块。这也意味着它不需要数据连接。

有人告诉我,预先缓存图块违反 GMaps 服务条款,但无法确定。如果这违反了他们的服务条款,我想知道是否有人找到了另一种方式(另一种服务),例如使用 OpenStreetMap。

0 投票
1 回答
3501 浏览

android - osmdroid-android-3.0.3.jar 中的叠加层

在我的问题的答案的大力帮助下,我之前设法使用 osmdroid-android-3.0.1.jar 将 OpenStreetMaps 合并到我的应用程序中

将 Google Maps 应用程序移植到 Osmdroid - 覆盖问题

我现在已经升级到使用 3.0.3 jar 并且无法显示我的叠加层。

我的应用程序可以将显示从 Google Maps 切换到 OSM,并在两者之上显示由线条和文本组成的相同叠加层。替代方案现在显示每个在自己的活动中运行,因为这些类相似但没有完全相同的方法,或者至少它们在 3.0.1 中没有。(最终我想使用 Osmdroid 包装 jar 将它们组合在一个活动中并减少重复代码,但这是以后的问题)现在我想获得与现在相同的功能使用新的 3.0.3 版本弃用了 3.0.1 jar。

使用新罐子,我仍然可以正常显示地图视图,但覆盖层已经消失。我不得不对代码进行一些更改,因为MapOverlay 扩展 org.osmdroid.views.overlay.Overlay类中的 3.0.1 onDraw() 方法现在已替换为 draw()(就像 Google 一样)。

之前的 onDraw()(现在是 draw)方法中的所有代码都从上面提到的问题的答案中逐字复制,它工作得很好,尽管我承认没有完全理解 worldsize、边界框和所描述的转换的概念.

我注意到该方法

现在已弃用,我不得不删除 tileZoom 和

让它编译。

当我看到 draw() 方法中的代码时,我可以在调试器中看到绘制覆盖所需的所有数据仍然存在且正确。绘制是通过canvas.drawLine(....)和canvas.drawText(....)等线条完成的。我根本没有使用函数的额外参数(布尔阴影)。

我的 redrawOverlay() 方法仍然是:

(Google listofOverlays.clear() 不应使用,因为 osmdroid 3.0.1 将元素 0 作为地图本身 - 因此 remove(1))

我想知道如何修改现有的 3.0.1 代码以使用 3.0.3?我希望其中一位作者可能会阅读这个问题。

更新

通过按照上述问题的答案中的建议过度调整 Minimap,用于从左上角到右下角绘制叠加层的 draw() 方法现在变为:

这工作正常

0 投票
1 回答
4895 浏览

api - Google 地图、必应地图、OpenStreetMaps 和 MapQuest 限制

我很困惑阅读某些在线地图服务(如谷歌地图、必应地图、OpenStreetMaps 和 Mapquest)的在线使用条款......

有一种方法可以在网站上使用 Google 或 Bing 地图进行非商业或商业用途,而没有任何每日请求限制?如果我想在我的网站上查看我插入的多个兴趣点的地图,我可以免费使用什么样的 Api 而没有任何使用或请求的限制?

我已经读过,在免费版本的 Google 或 Bing 中,有时地图内可能会出现一些广告,并且我无法在我的网页中插入来自不同于 Google 或 Bing 的其他提供商的任何广告。这是真的?

如果我想使用 OpenStreetMaps(一个开源地图数据库)或合作伙伴 MapQuest,确实没有任何限制每日请求或地图上出现的广告或独家横幅活动的政策?

但是,最后,如果我尝试使用此地图构建一个门户,并且我想计划将来插入一些广告并创建一家小公司,那么我正在做商业或非商业用途(现在和将来)??

0 投票
1 回答
208 浏览

iphone - 凹凸 + OpenStreetMap 错误

我在使用 OpenStreetMap 库和 Bump 库时遇到问题。

我得到了严重错误-

0 投票
2 回答
2188 浏览

database - 我应该使用什么 DBMS 将 openstreetmap 存储为图形?

背景:

我需要将以下数据存储在数据库中:

  • 带有标签的 osm 节点;

  • 带有权重的 osm 边(即从 .osm 文件中的“方式”中提取的两个节点之间的边)。

形成边的节点,在相同的“路”集合中应该具有与那些路相同的标签,即,作为高速公路的“路”节点集合中的每个节点都应该具有“高速公路”标签。

我需要这种结构来轻松生成基于各种过滤器的图,例如仅由节点和边组成的图,即高速公路,或“人行道”图等。

问题:

我之前没有听说过空间索引,所以我只是将一个 .osm 文件解析为 MySQL 数据库:

  • 所有节点到“节点”表(具有各自的坐标列) - 好的,在我的情况下大约有 9,000,000 行:

(INSERT INTO nodes VALUES [pseudocode]node_id,lat,lon[/pseudocode];

  • 'edges' 表的所有方式(通常一种方式会创建一些边) - 好的,还有大约 9,000,000 行:

(INSERT INTO edges VALUES [pseudocode]edge_id,from_node_id,to_node_id[/pseudocode];

  • 向节点添加标签,计算边的权重 -问题

这是有问题的 php 脚本:

Nohup 每 55-60 秒显示一次 'echo "$i\n"' 的输出(如果 'edges' 表的大小超过 9,000,000 行,就像我的情况一样,这可能需要 17 年以上才能完成)。

Htop 显示了一个占用 40-60% CPU 的 /usr/bin/mysqld 进程。

尝试计算边的权重(距离)的脚本存在相同的问题(选择所有边,取一条边,然后从“节点”表中选择该边的两个节点,然后计算距离,然后更新边表)。

问题:

如何使此 SQL 更新更快?我应该调整任何 MySQL 配置设置吗?或者我应该将 PostgreSQL 与 PostGIS 扩展一起使用?我应该为我的数据使用另一种结构吗?或者我应该以某种方式利用空间索引?

0 投票
2 回答
3274 浏览

mysql - 如何从 .osm 文件在数据库中构建“道路”图

要求的结果:

一个包含两个表“edges”和“nodes”的数据库,可用于生成表示某个区域(例如城市)中所有可行驶道路(高速公路)的图表。数据集是从 .osm 文件中解析的。

背景:

我将第二次尝试创建一个包含两个表的数据库 - 节点和边,可用于对其进行不同的最短路径计算。

首先,我尝试手动将不同的数据提取到数据库中(php 脚本):

  • 将 .osm 文件中的所有节点解析为“节点”表
  • 将所有边解析到“边”表中(即解析路径并从中生成边(由起始节点和目标节点组成),同时将标签添加到边;
  • 从边表中删除所有具有黑名单标签(不是高速公路)的边;
  • 从节点表中删除边缘表中不存在的所有节点。

问题是这个序列非常不可靠,它只能在小数据集上“马马虎虎”地工作,比如数千个节点,而不是数百万个节点。

问题:

对于由数百万个节点和边组成的数据库,道路提取(即基于特定标签过滤器生成边)非常慢。

可能的解决方案:

这次我要做的是:

  • 设置 PostgreSQL rdbms;
  • 使用 OSM 现成的脚本解析 .osm 文件以获得完整的节点、路径和关系表;
  • 从ways表中提取所有带有特定标签(例如'highway')的边缘到一个新的'edges'表中;
  • 将边缘表中存在的所有节点提取到新的 graph_nodes 表中;
  • 之后,我可能可以从“edges”和“graph_nodes”表中生成“roads”图。

问题:

如何正确地将 .osm 文件解析到数据库中以生成“edges”和“nodes”表?

如何仅将 .osm 中的可行驶道路提取到数据库中?

如何快速完成(我的意思是为数百万个节点和边表运行数小时的脚本,而不是数周)?

我应该考虑关系吗?

如果是,我该怎么做?

0 投票
1 回答
743 浏览

java - JxMapKit Waypoint 点击事件

嗨,jxmapkit 的航点有点击事件吗?我正在尝试找到一种使航点可单击的方法,因此当单击航点时,将打开一个框架。

谢谢

0 投票
1 回答
1682 浏览

java - jxmapkit 点击事件返回不正确的经纬度

我正在使用 JXmapkit 以在其中路点坐标存储在数据库中的框架中显示带有 openstreetmaps 路点的地图。单击位置时,应用程序将检查该区域的坐标是否在航点周围的区域内,如果为真,则将打开内部框架。问题是单击位置的坐标总是返回不正确的示例,正​​确的坐标(35.9097,14.4259)返回为(85.05012,-179.96198)。我尝试添加差异,但它不起作用,因为我无法确定坐标之间的确切差异,因为每次单击同一位置时,坐标总是不同。我错过了什么还是我做错了什么?