4

위도 경도 값을 픽셀 위치로 변환 할 필요가 있습니다. 나는 lat/lng-> pixel에서부터 많은 해결책을 찾았지만 그 반대면에는 아무 것도 찾을 수 없습니다.픽셀 위치를 위도/경도로 변환하고 그 반대의 경우

노트의 몇 :

  • 지도는 고정 된 크기, 아니 줌, 아니 타일입니다.
  • 나는 그다지 중요하지 않은 매우 정확한 것을 필요로하지 않는다.
  • 메르카토르 투영이 바람직하지만 필수는 아닙니다. 나는 실제로 결과를 표시하지 않는다. 즉, 내가 어떤 웹 기반 API 년대에 의존 할 수 없습니다 (모든 2D 투사)
  • : 거의 모든 프로그래밍 언어에서 어떤 Google지도

해결책은 한가에 의존하지 않는, 잘 될 것입니다 모든 플랫폼 관련 API.

는 위도로가는 예입니다/LNG-> 픽셀 :

var y = Math.round(((-1 * lat) + 90) * (this.MAP_HEIGHT/180)); 
var x = Math.round((lng + 180) * (this.MAP_WIDTH/360)); 
+1

계산이 작동해야하는 맵 투영을 알아야합니다. 귀하의 질문에 대한 계산 예가 Mercator지도에서 작동하지 않을 것입니다. [등각 투영] (http://en.wikipedia.org/wiki/Equirectangular_projection)을 가정합니다. –

+0

저는 2D 투영에 대해 개방적입니다. 투광기는 나의 요구를 완벽하게 충족시킬 것입니다. 결과를 시각화하지 않으므로 특정 투영과 관련되지 않습니다. –

+0

아무 것도 표시하지 않으면 처음부터 픽셀을 사용하고있는 지역 (!)은 무엇입니까? –

답변

5
var y = Math.round(((-1 * lat) + 90) * (this.MAP_HEIGHT/180)); 
var x = Math.round((lng + 180) * (this.MAP_WIDTH/360)); 

일부 대수를 사용하고 내가 함께 나온 : 그 수학

var lat=(y/(this.MAP_HEIGHT/180)-90)/-1 
var lng = x/(this.MAP_WIDTH/360)-180 

완전히 확신하지 그것은 내 머리 속에서 이루어 졌기 때문에 작동해야하지만, 먼저 테스트 해보십시오.

+0

+1해야 할 일을 시도해보십시오! –

+0

내 수학 능력에 녹슬지는 것은 분명합니다. 고마워, 내가 필요한 것! –

+2

숫자는 무엇입니까? 180, 360 등? Map_height도도 또는 픽셀 단위입니까? –

관련 문제