Equirectangular map on Web

孤街浪徒 提交于 2019-12-02 17:17:56

问题


I plan to build an online map for markers (pins) of a game and I don't manage to set the correct latitude of my markers.

Original map is a square of 2048*2048px

Then I got markers (many thousands)

Map coordinates are set with a x, y notation from 0 to 100. 0, 0 is the top left corner and 100, 100 is the bottom right corner of the map. x=50, y=50 is lat = 0°, lng = 0° (the center of the picture).

To convert from my notation to longitude I use this JS function, it works well :

        function longitude(x)
        {
            var lng = 0
            if (x < 50) // Negative Longitude (West)
            {
                lng = (x - 50) / 50 * 180;
            }
            else // Positive Longitude (East)
            {
                lng = (50 - x) / 50 * 180;
            }
            return lng
        }

But for latitude it don't work because those engines use a Mercator projection and me not.

If someone have the correct formula, it would be greatly appreciated :(


回答1:


Welcome to SO!

If you are using Leaflet, you should specify the map option crs and use L.CRS.Simple:

A simple CRS that maps longitude and latitude into x and y directly. May be used for maps of flat surfaces (e.g. game maps). Note that the y axis should still be inverted (going from bottom to top).

This will avoid the Web Mercator projection, especially the latitude which is a special computation as you figured out (see the linked Wikipedia article for the equation).

Then you are left with correctly mapping your x and y coordinates to your need, especially in respect with your map image.

For instance, assuming you set your map image as:

L.imageOverlay("imageUrl", [[0, 0], [256, 256]]).addTo(map);

(so that it fits the equivalent of 1 tile at zoom level 0)

Then you could have a conversion like:

function longitude(x) {
  return x / 100 * 256;
}

function latitude(y) {
  return 256 - y / 100 * 256; // Still need to revert y.
}


来源:https://stackoverflow.com/questions/39001349/equirectangular-map-on-web

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!