所以,我有一个Mapbox地图,我循环遍历一个数组来生成geojson对象数组。我有一些方法我已经抽象出来了 - 我已经测试了一切,但一切正常,但我的标记没有显示出来。我做错了什么?
var map = L.mapbox.map('map', 'my_map_code_thing');
var geojson = [];
var layer = L.mapbox.featureLayer().addTo(map);
for (i = 0; i < myArray.length; i++) {
var marker =
{
"type": "Feature",
"geometry": {
"coordinates": [
myArray[i].latitude,
myArray[i].longitude
],
"type": "Point"
},
"properties": {
"title": myArray[i].title,
"address": myArray[i].address,
"marker-color": getColor(myArray[i].price_low),
"marker-size": "medium",
"marker-symbol": getSymbol(myArray[i].genre)
}
}
geojson.push(marker);
};
layer.setGeoJSON(geojson);
layer.on('ready', function() {
map.fitBounds(layer.getBounds());
});
答案 0 :(得分:0)
尝试使用layer.geoJSON(geojson);
代替layer.setGeoJSON(geojson);
答案 1 :(得分:0)
我刚试过运行你的代码,它运行正常。我试过的代码是:
var map = L.mapbox.map('map', 'my_map_code_thing');
var layer = L.mapbox.featureLayer().addTo(map);
var myArray= [
{
"latitude": -77.03238901390978,
"longitude": 38.913188059745586
},
{
"latitude": -122.414,
"longitude": 37.776
}
];
var geojson = [];
for(var i = 0; i < myArray.length; i++) {
var marker = {
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [
myArray[i].latitude,
myArray[i].longitude
]
},
"properties": {
"title": "Mapbox DC",
"description": "1714 14th St NW, Washington DC",
"marker-color": "#fc4353",
"marker-size": "large",
"marker-symbol": "monument"
}
}
geojson.push(marker);
}
layer.setGeoJSON(geojson);
layer.on('ready', function() {
map.fitBounds(layer.getBounds());
});
确保您从latitude
获得longitude
,properties
和其他myArray
的正确值。
答案 2 :(得分:0)
我相信我遇到了this problem。在一次侥幸中,我意外地缩小了,看到我在南极洲生成了一个标记。扭转了lat / lng,一切都很好。