我在Leaflet上加载shapefile时遇到了问题。 Internet上的许多示例都使用包含这些文件的压缩shapefile(.zip):
许多人说只有.shp,.shx和.dbf是强制性的,所以Leaflet可以在地图上显示形状。可以找到一个工作shapefile的示例here。它由shp,shx,dbf和prj组成。
然后我尝试在this page使用另一个shapefile(单击示例数据)。 .zip文件不仅包含shapefile,还包含其他文件,因此我只使用shapefile文件夹(包含shp,shx,dbf和prj)并压缩它们以形成新的压缩文件。然后,我将文件名作为参数放到L.Shapefile
<html>
<head>
<link rel="stylesheet" href="leaflet/leaflet.css" />
<link rel="stylesheet" href="leaflet/leaflet.label.css" />
<link rel="stylesheet" type="text/css" href="style.css" />
<script src="leaflet/leaflet.js"></script>
<script src="leaflet/leaflet.label.js"></script>
<script src="leaflet/leaflet.sprite.js"></script>
<script src="leaflet/leaflet.shpfile.js"></script>
<script src="leaflet/shp.js"></script>
</head>
<div id="map">
<script>
var map = L.map('map').setView([-6.2398088,106.8152522], 10);
L.tileLayer('http://10.99.3.132/osm_tiles/{z}/{x}/{y}.png', {
attribution: 'Map data © <a href="http://openstreetmap.org">OpenStreetMap</a> contributors, <a href="http://creativecommons.org/licenses/by-sa/2.0/">CC-BY-SA</a>',
maxZoom: 18
}).addTo(map);
var shpfile = new L.Shapefile("Shapefile.zip");
shpfile.addTo(map);
</script>
</div>
</body>
</html>
注意:我使用自己的磁贴服务器并执行chmod +x
到Shapefile.zip
(我使用Mac OSX 10.9.2和Leaflet 0.7.3,leaflet.label
,leaflet.sprite
,和Leaflet.Shapefile
插件)
为什么会这样?第一个工作的shapefile和由我自己压缩的第二个shapefile包含相同数量的文件,并且两个必需文件(shp,shx和dbf)都包含在它们中。我错过了一些基本或重要的东西吗?
任何想法都会受到赞赏。谢谢!
答案 0 :(得分:0)
__MACOSX
的文件夹,其中有一个文件,其中包含与其他文件相同的名称,但是后面有一个点,它认为这是一个shapefile,修复了你的shapefile应该工作http://leaflet.calvinmetcalf.com/