MapBox GLJS - 使用 for 循环创建时不显示标记
MapBox GLJS - Markers aren't showing up when created using for loop
我正在使用 MapBox GL JS API 并且我正在尝试遍历包含标记数据数组的数组以创建一堆标记。当我遍历数据并将其打印到控制台时,它可以正常工作。当我 运行 下面的代码时,也没有错误,但标记没有出现。 fix/change 我需要做什么才能显示标记?
我的代码:
if (!mapboxgl.supported()) {
alert("Your browser does not support Mapbox GL!");
}
// map initialization
var map = new mapboxgl.Map({
container: 'map', // container id
style: 'mapbox://styles/mapbox/streets-v11', // style URL
center: [-121.91, 37.7], // starting position [lng, lat]
zoom: 6 // starting zoom
});
// test marker
var marker = new mapboxgl.Marker({
color: "#FFFFFF",
draggable: false
}).setLngLat([-121.91, 37.7])
.setPopup(new mapboxgl.Popup().setHTML("<h3>Dublin, CA</h3>"))
.addTo(map);
// import markers for all the restaurants
// separate colors for "clean" restaurants and "violation" restaurants
// info needed from csv files: id#, restaurant name, cords, and violation type (if applicable)
var mapdata = [[2359228,'MINGHIN STRETEREVILLE',41.89246018674152,-87.62203678900627], [2356848,'OASIS FRESH FOOD INC.',41.93297686391123,-87.64149608965117], [2356434,'SIMPLY THALIA',41.88342263701489,-87.62802165207536]];
var mapdatalength = mapdata.length;
for (var i = 0; i < mapdatalength; i++) {
var marker = new mapboxgl.Marker({
color: "#e74c3c",
draggable: false
}).setLngLat([mapdata[i][2], mapdata[i][3]])
.setPopup(new mapboxgl.Popup().setHTML(mapdata[i][1]))
.addTo(map);
}
问题似乎在于,标记是使用 class“.mapboxgl-marker”创建的,但是它没有任何样式,因此如果您添加以下内容 CSS 你应该能够看到标记。
.mapboxgl-marker {
width: 40px;
height: 40px;
border-radius: 50%;
background: red;
}
我认为您在代码中切换了纬度和经度。尝试反转它们,看看是否可行
您需要切换经度和纬度。这会将标记放在正确的位置
我正在使用 MapBox GL JS API 并且我正在尝试遍历包含标记数据数组的数组以创建一堆标记。当我遍历数据并将其打印到控制台时,它可以正常工作。当我 运行 下面的代码时,也没有错误,但标记没有出现。 fix/change 我需要做什么才能显示标记?
我的代码:
if (!mapboxgl.supported()) {
alert("Your browser does not support Mapbox GL!");
}
// map initialization
var map = new mapboxgl.Map({
container: 'map', // container id
style: 'mapbox://styles/mapbox/streets-v11', // style URL
center: [-121.91, 37.7], // starting position [lng, lat]
zoom: 6 // starting zoom
});
// test marker
var marker = new mapboxgl.Marker({
color: "#FFFFFF",
draggable: false
}).setLngLat([-121.91, 37.7])
.setPopup(new mapboxgl.Popup().setHTML("<h3>Dublin, CA</h3>"))
.addTo(map);
// import markers for all the restaurants
// separate colors for "clean" restaurants and "violation" restaurants
// info needed from csv files: id#, restaurant name, cords, and violation type (if applicable)
var mapdata = [[2359228,'MINGHIN STRETEREVILLE',41.89246018674152,-87.62203678900627], [2356848,'OASIS FRESH FOOD INC.',41.93297686391123,-87.64149608965117], [2356434,'SIMPLY THALIA',41.88342263701489,-87.62802165207536]];
var mapdatalength = mapdata.length;
for (var i = 0; i < mapdatalength; i++) {
var marker = new mapboxgl.Marker({
color: "#e74c3c",
draggable: false
}).setLngLat([mapdata[i][2], mapdata[i][3]])
.setPopup(new mapboxgl.Popup().setHTML(mapdata[i][1]))
.addTo(map);
}
问题似乎在于,标记是使用 class“.mapboxgl-marker”创建的,但是它没有任何样式,因此如果您添加以下内容 CSS 你应该能够看到标记。
.mapboxgl-marker {
width: 40px;
height: 40px;
border-radius: 50%;
background: red;
}
我认为您在代码中切换了纬度和经度。尝试反转它们,看看是否可行
您需要切换经度和纬度。这会将标记放在正确的位置