Я использую Mapbox GL JS v0.14.2, и я искал высоко и низко в документации, и очень мало об этом.Mapbox GL JS getBounds()/fitBounds()
Если вы используете стандартный API JS, очень ясно, что «приспосабливать карту к маркерам», используя пример, который они предоставили (https://www.mapbox.com/mapbox.js/example/v1.0.0/fit-map-to-markers/); однако установка при использовании GL api совсем другая. API GL имеет getBounds()
(https://www.mapbox.com/mapbox-gl-js/api/#Map.getBounds), но потому, что у вас нет именованного слоя, такого как стандартный JS API, поэтому я изо всех сил пытаюсь понять, как использовать getBounds()
.
Я нашел это (Mapbox GL JS API Set Bounds), но верно не может быть правильным ответом?
Это основная часть моей установки; за исключением настройки JSON и других параметров.
mapboxgl.accessToken = 'pk.eyJ1IjoicmljaGdjIiwiYSI6ImNpa3lpcWIzYjAwNWZ3bm0wMHJvOWV5enYifQ.l55SYYn9MVjEN8CM3Q1xdw';
var markers = <?php echo $programme_json; ?>;
var map = new mapboxgl.Map({
container: 'map',
style: 'mapbox://styles/richgc/cikyo5bse00nqb0lxebkfn2bm',
center: [-1.470085, 53.381129],
zoom: 15
});
map.on('style.load', function() {
map.addSource('markers', {
'type': 'geojson',
'data': markers
});
map.addLayer({
"id": "markers",
"interactive": true,
"type": "symbol",
"source": "markers",
"layout": {
"icon-image": "venue-map-icon-blue",
'icon-size': 0.5,
"icon-allow-overlap": true
}
});
map.scrollZoom.disable();
});
Я попытался следующие:
alert(map.getBounds()); // LngLatBounds(LngLat(-1.4855345239256508, 53.37642500812015), LngLat(-1.4546354760740883, 53.38583247227842))
var bounds = [[-1.4855345239256508, 53.37642500812015],[-1.4546354760740883, 53.38583247227842]]
map.fitBounds(bounds);
Так что я знаю, как к fitBounds, но я не уверен, как получить их map.getBounds()
только, кажется, возвращает набор центральное положение LNG/лат.
маркеры JSON: собственный geojson-extent плагин
var markers = {"type":"FeatureCollection","features":[{"type":"Feature","properties":{"title":"Site Gallery","url":"\/Freelance\/art-sheffield-2016\/programme\/site-gallery\/","summary":"Duis arcu tortor, suscipit eget, imperdiet nec, imperdiet iaculis, ipsum. Donec id justo. Aenean tellus metus, bibendum sed, posuere ac, mattis non, nunc. Suspendisse feugiat. Etiam rhoncus.","image":"\/Freelance\/art-sheffield-2016\/site\/assets\/files\/1032\/site_gallery.jpg","marker-symbol":"venue-map-icon-blue","colour":"blue"},"geometry":{"type":"Point","coordinates":["-1.466439","53.376842"]}},{"type":"Feature","properties":{"title":"Moore Street Substation","url":"\/Freelance\/art-sheffield-2016\/programme\/moore-street-substation\/","summary":"","image":null,"marker-symbol":"venue-map-icon-green","colour":"green"},"geometry":{"type":"Point","coordinates":["-1.477881","53.374798"]}},{"type":"Feature","properties":{"title":"S1 Artspace","url":"\/Freelance\/art-sheffield-2016\/programme\/s1-artspace\/","summary":"","image":null,"marker-symbol":"venue-map-icon-red","colour":"red"},"geometry":{"type":"Point","coordinates":["-1.459620","53.380562"]}}]};
«map.getBounds() просто возвращает заданное центральное положение lng/lat« Не возвращает ли нижние левые и верхние правые координаты вашей ограничивающей рамки? –