【问题标题】:leafletjs: polyline list into geojsonLeafletjs:折线列表到geojson
【发布时间】:2015-02-08 23:26:00
【问题描述】:

我有折线列表。我想让它更有条理。如何将我的折线列表放入 GeoJSON?

var point1 = new coordsToLatLngArray(0, 100);
var point2 = new coordsToLatLngArray(200, 150);
var point3 = new coordsToLatLngArray(400, 70);
var point4 = new coordsToLatLngArray(10, 70);
var point5 = new coordsToLatLngArray(90, 50);
var pointList = [point1, point2, point3, point4, point5];

var firstpolyline = new L.polyline(pointList, {
color: 'red',
weight: 3,
opacity: 0.5,
smoothFactor: 1

});
firstpolyline.addTo(map);

我正在尝试使用:http://leafletjs.com/examples/geojson.html 但它没有用。我的线在地图之外:

var geojsonFeature = [{
    "type": "LineString",
    "coordinates":
    [
        [0,0], 
        [-100,100]
    ]
}];
var myStyle = {
    "color": "#ff7800",
    "weight": 5,
    "opacity": 0.65
};
var myLayer = L.geoJson(coordsToLatLngArray(), {style: myStyle }).addTo(l);
myLayer.addData(geojsonFeature);

问题演示: http://jsfiddle.net/n4k1psuh/

【问题讨论】:

    标签: javascript json google-maps geojson


    【解决方案1】:

    只会将一个参数传递给coordsToLatLngArray,一个数组:

    [longitude,latitude]
    

    函数必须如下所示:

    var coordsToLatLngArray = function(c) {
        var e = fixLat(c[1]),
            t = c[0],
            n = e / latScale + latScaleVal / 2 / latScale,
            r = t / longScale + longScaleVal / 2 / longScale;
        return [-n, r]
    };
    

    注意:在geoJSON中,坐标的顺序是相反的,[longitude,latitude],所以坐标必须是:

            [
                [100, 0],
                [150, 200],
                [70,400],
                [70,10],
                [50,90]
            ]
    

    绘制特征调用:

        var myLayer = L.geoJson(geojsonFeature, {
            style: myStyle,
            coordsToLatLng:coordsToLatLngArray
        }).addTo(l);
    

    演示:http://jsfiddle.net/Ltaw5teo/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-16
      • 1970-01-01
      • 2013-02-04
      • 2018-11-18
      • 1970-01-01
      • 2019-09-18
      • 2019-11-11
      相关资源
      最近更新 更多