我的JSON数据:
{
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [
-70.219841,
8.6310997
]
},
"properties": {
"id": 336,
"id_user": 1,
"id_device": 1,
"timestamp": 1446571154,
"date": "12:49PM 03-11-2015",
"Latitude": 8.6310997,
"Longitude": -70.219841,
"speedKPH": 0,
"heading": "",
"Name": "N\/D",
"City": "N\/D",
"estatus": "Stop"
}
}
]
}
L.geoJson
的坐标数组。
L.polyline
http://jsfiddle.net/nathansnider/36TWHXUX/ 确定您的geojson数据仅包含点几何形状,在定义
function connectTheDots(data){
var c = [];
for(i in data._layers) {
var x = data._layers[i]._latlng.lat;
var y = data._layers[i]._latlng.lng;
c.push([x, y]);
}
return c;
}
在window.geojson
Edit:
nathan的想法是正确的,从某种意义上说,您必须自己构建一条多线(标记之间的界线)。要严格,当点列表仍然是一个数组时,您必须使用数据(假设数组顺序是要获得的线路连接的顺序)。这意味着您必须直接处理Geojson数据。 ,例如,您会这样做:
pathCoords = connectTheDots(window.geojson);
var pathLine = L.polyline(pathCoords).addTo(map)
markers
用于点特征。 请参考传单Tutorial
和报道。
当您要指定传单应如何样式1的样式
时,您确实应该构成一个容纳Path选项的对象(例如第一行上的
function connectDots(data) {
var features = data.features,
feature,
c = [],
i;
for (i = 0; i < features.length; i += 1) {
feature = features[i];
// Make sure this feature is a point.
if (feature.geometry === "Point") {
c.push(feature.geometry.coordinates);
}
}
return c;
}
L.polyline(connectDots(data)).addTo(map);
style
选项style
层,不在图标内。
当您要指定传单应该如何样式标记器
L.geoJson
选项,因为该代码只能在点上应用,而不是试图将其应用于向量(例如没有方法pointToLayer
)。最终,当您要执行适用于向量和标记的操作时,您会使用
setIcon
选项来绑定弹出窗口。
因此,您最终会得到类似的东西:
onEachFeature
在评论中指出的是,每当您寻求其他人的帮助时,您都会更轻松(因此,您会得到更好,更快的支持),如果您花时间正确地陈述您的问题,并带有描述 /屏幕截图出错并发布一些干净的代码。客户端代码的一个很好的做法是在Jsfiddled上重现该问题。
我知道我来晚了,但我只是想帮助,尝试此代码👇🏿var myIcon = L.icon({
iconUrl: './images/mymarker.png',
iconSize: [18, 28]
});
var geojson = L.geoJson(data, {
style: style, // only applies to vectors.
// only applies to point features
pointToLayer: function(feature, latlng) {
return L.marker(latlng, {icon: myIcon});
},
// will be run for each feature (vectors and points)
onEachFeature: function(feature, layer) {
layer.bindPopup(feature.properties.date + '<br />' + feature.properties.id);
}
});