使用传单将边框图层添加到离线地图

时间:2014-09-05 13:24:58

标签: javascript html map leaflet openstreetmap

我使用传单和图块制作了离线地图。这些图块不包含国家边界或州边界。我想将所有国家边界和州边界添加到这些图块中。这是构建地图的代码。

 var map = L.map('map').setView([33.705, -84.3900], 4);
            L.tileLayer('tiles/{z}/{x}/{y}.png', {
            attribution: '© <a>ABC</a>',
            maxZoom: 11,
            minZoom: 4
        }).addTo(map);

        map.attributionControl.setPrefix(''); 
        var london = new L.LatLng(51.505, -0.09);
        map.addLayer(london);

这是没有任何边框线的地图图块。如何使用传单添加边框图层。

enter image description here

我希望输出看起来像

enter image description here

1 个答案:

答案 0 :(得分:2)

首先,您将需要定义“边界图层”的点的纬度/经度对。如果你有geoJSON格式的那些点,那将是最好的。获得该数据后,您可以迭代这些点并连接它们并创建一个图层。

var states = [{
"type": "Feature",
"properties": {"party": "Republican"},
"geometry": {
    "type": "Polygon",
    "coordinates": [[
        [-104.05, 48.99],
        [-97.22,  48.98],
        [-96.58,  45.94],
        [-104.03, 45.94],
        [-104.05, 48.99]
    ]]
}
}, {
"type": "Feature",
"properties": {"party": "Democrat"},
"geometry": {
    "type": "Polygon",
    "coordinates": [[
        [-109.05, 41.00],
        [-102.06, 40.99],
        [-102.03, 36.99],
        [-109.04, 36.99],
        [-109.05, 41.00]
    ]]
}
}];
L.geoJson(states, {
style: function(feature) {
    switch (feature.properties.party) {
        case 'Republican': return {color: "#ff0000"};
        case 'Democrat':   return {color: "#0000ff"};
    }
}
}).addTo(map);

当然,这些点需要进行逻辑分组,因此您可以连接正确的点。请务必查看此链接http://leafletjs.com/examples/choropleth.html