Mapbox GL JS에서 오른쪽 하단 위도 경도 얻기
데모는 다음과 같습니다.
그 중 빠진 작은 재료를 소개합니다.
지도 오른쪽 하단의 위도 경도를 얻고 싶습니다.
Mapbox GL JS 로 표시되고 있는 지도의 우하의 위도 경도를 취득할 필요가 있어, 빨리 문서를 조사해, 한 번 이하와 같이 구현했습니다.
const bottomRight = map.getBounds().getSouthEast()
getBounds()
에 대해서는 문서에는 이하와 같은 기술이 있습니다.Returns the map's geographical bounds. When the bearing or pitch is non-zero, the visible region is not an axis-aligned rectangle, and the result is the smallest bounds that encompasses the visible region.
후반이 잘 모르겠지만, 뭐라고 꽤 그럴까라고 생각합니다만, 결론으로부터 말하면 이것으로는 안 되었습니다.
Mapbox GL JS 는 벡터 타일이므로 지도가 기울어져 있는 것이 있을 수 있겠지요.
위 이미지와 같이 지도가 기울어진 경우
getBounds()
에서 얻은 위치는 빨간색 화살표입니다.지도 오른쪽 하단의 위도 경도를 얻는 올바른 방법
그래서 최종적으로 다음과 같은 방법으로 구현했습니다.
const width = map.getContainer().offsetWidth
const height = map.getContainer().offsetHeight
const bottomRight = map.unproject([width, height])
unproject()
라는 함수는 픽셀의 위치를 위도 경도로 변환하는 함수입니다. 반대로 위도 경도에서 픽셀로 변환하고 싶을 때는 project()
입니다.이 함수의 이름 조금 이해하기 어렵습니다. 웃음
뭐하고 싶었는지
이번에 만든 이미지로 내보내는 플러그인은
<canvas />
를 PNG로 변환하여 내보냅니다.처음에, 할 수 있었다고 기뻐하고 있었습니다만,
© OpenStreetMap Contributors
가 들어가지 않으면 좋지 않다고 생각해, 그것을 넣고 싶었습니다.그런데, Mapbox GL JS 로 표시되고 있는 Attribution 는, Canvas 는 아니고 보통의 HTML 텍스트를 위의 레이어에 붙이고 있을 뿐이므로, 이미지에는 들어오지 않았던 것이군요.
그래서 Attribution 용의 캐릭터 라인을 Canvas 에 퍼뜨리는 처리를 실시했습니다.
그 때문에 동적으로 GeoJSON을 만들어 지물로서 삽입한다는 처리를 하고 있었고, 그래서 우하의 위도 경도를 알고 싶었습니다.
해보면 아무것도 아닌 처리였습니다만, 「어차피 화상으로서 낼 뿐이니까, 일시적으로 지물로서 버려 버려」라고 하는 아이디어에 도달하기까지 반 일정 걸려 버렸습니다. . .
(반나절은 Canvas를 직접 조작하려고 노력했다...w)
Reference
이 문제에 관하여(Mapbox GL JS에서 오른쪽 하단 위도 경도 얻기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/miya0001/items/320d6ae725ed88745c8c텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)