GIS 有一个完整的 StackExchange,如果您像我一样,作为不了解 GIS 的编码员在其中遇到问题,那么您就可以搭便车了:
https://gis.stackexchange.com/questions/48949/epsg-3857-or-4326-for-googlemaps-openstreetmap-and-leaflet
事实证明,地图(“GIS”)中有一个名为 EPSG 的标准,人们在提及它时似乎可以互换使用“EPSG”、“EPSG SRID”和“SRID”。在大多数 GPS 坐标使用中,如果您谈论的是地球(包括您从谷歌地图获得的纬度),那么您使用的是 EPSG SRID 4326,如果您谈论的是平面 2D 地图(如谷歌自定义地图) ,您说的是 EPSG SRID 3857。
还有一些关于 WGS 的问题你可以忽略。
.Net 仅在 EPSG SRID 中寻找实际的数字 ID。如果这些只是 DbGeography 上的常量,那将非常有帮助,例如:
public class DbGeography
{
public const int SridGps = 4326;
public const int Srid2dPlane = 3857;
但没有这样的运气。
无论如何,请考虑在您的应用程序中使它们成为常量,而不是仅仅抛出一个未记录的幻数。我们的小助手类:
public class GeoHelper
{
public const int SridGoogleMaps = 4326;
public const int SridCustomMap = 3857;
public static DbGeography FromLatLng(double lat, double lng)
{
// http://codepaste.net/73hssg
return DbGeography.PointFromText(
"POINT("
+ lng.ToString() + " "
+ lat.ToString() + ")",
SridGoogleMaps);
}
}