【发布时间】:2014-05-01 10:40:30
【问题描述】:
在看到 Google Devs 最近的video 后,我决定制作一张英国的区域地图。这个网站上提到了一些我不得不忽略的可能性*
所以我最终使用了这个网站(数据下载示例页面):http://mapit.mysociety.org/area/11804.html
注意到 GeoJSON 下载 是第三个链接了吗?它的文件大小约为 1Mb。当我第一次尝试将它与我的地图一起使用时:
function initMap(){
var ukc = new google.maps.LatLng(54.8, -4.6);
var mapOptions = {
zoom: 5,
center: ukc
};
map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions);
map.data.loadGeoJson('http://local.mapsite.com:8080/app/jsondata/eastern.json');
}
$(document).ready(function(){
initMap();
});
我收到上述错误:Uncaught InvalidValueError: not a Feature or FeatureCollection
修复尝试 1 - 谷歌搜索
谷歌搜索错误返回没有任何用处。
修复尝试 2 - 缩小它
我想这可能是野兽的绝对大小,所以我使用 mapshaper.org 将它缩小到更易于管理的 10K。 还是没有运气!
修复尝试 3 - Lint
也许我的 GeoJSON 格式错误?但它怎么会考虑它就在 mapit.org 上工作,但我发现了这个用于 linting GeoJSON 数据的精彩网站:http://geojsonlint.com/ - linting 奏效了!显然,GeoJSON 工作得非常好,以至于它在英国的所有荣耀中绘制了我的东英吉利多边形(注意 geojsonlint 使用 OpenStreetMap)。但仍然没有运气
修复尝试 4 - TopoJson
希望我可以组合这些区域并同时进行压缩,我拼命地认为 topojson 会起作用。我试过了 - 我仍然遇到同样的错误。这是我在 Google Drive 上共享的 topojson 文件的链接:someregions.json 不走运。
修复尝试 5 - 添加功能代码到 JSON 的开头
当前 GeoJSON 文件开始 {"bbox":[-0.745702,51.448473,1.767999,52.98991],"type":"GeometryCollection","geometries":...
我补充说:
{"type": "Feature", "bbox":[-0.745702,51.448473,1.767999,52.98991],"type":"GeometryCollection","geometries":
修复尝试 6
重试不同的区域,因为它们在开始附近不包含 bbox 参数,而只是开始 { “类型”:“多边形”,“坐标”:[ [ [ -3.155785, 53.427385 ],[ -3.151533, 53.427328 ],[...
仍然运气不佳。
在(失败)结论中
即使我证明我的文件足够小,linted并且在其他地方工作我仍然在尝试时从控制台收到那些令人愤怒的错误消息把它们放在我的地图上。
Uncaught InvalidValueError: not a Feature or FeatureCollection
这是我通过 GDrive 公开共享的缩小版 GeoJSON 文件:https://drive.google.com/file/d/0B42Aec8RKcHtNVNZZUxqV0Y5Rkk/edit?usp=sharing
我的下一次尝试将涉及 topojson 将所有区域压缩成一个具有内部边界的区域,但我想先在这里检查一下,看看是否有人知道我的问题可能是什么?因为那可能又浪费了几个小时的无用能量。
* 尝试使用 Ordanance Survey 数据失败,因为他们提供了 SHD 数据,而不是 SHP,如上一个关于该主题的问题所述。所以我无法使用 ogr2ogr 将其转换为 GeoJSON。
【问题讨论】:
-
请注意,Ordnance Survey 确实提供 SHP 数据,因为这是我们用来导入 MapIt 的数据:) MapIt 还有一个 simple_tolerance 参数来降低返回形状的复杂性。
-
我看到您在该答案上留下的评论收到了可以在此处回答您的问题的回复 - 您需要在链接到的页面上打勾,然后提交表格以发送电子邮件以下载边界线数据。或者,您可以从我们维护的数据缓存中获取它parlvid.mysociety.org/os
标签: google-maps google-maps-api-3 maps geojson