如何在.net core 2 c#中获取地理位置

Posted

技术标签:

【中文标题】如何在.net core 2 c#中获取地理位置【英文标题】:How to get geolocation in .netcore 2 c# 【发布时间】:2018-01-22 12:13:18 【问题描述】:

有人知道如何使用 C# 在 .net core 2 中获取浏览器的 GeoLocation 吗?我写了一个 ASP 站点,我想获取当前位置的经纬度,但我做不到。我希望能够使用稍后在我的代码中找到的 lat 和 long。当我迷路时,任何提示都会很棒。我希望如果我的浏览器碰巧在手机上使用,它会根据 GPS 等知道它的位置

【问题讨论】:

据我所知,这只能使用 javascript。因此,您可以做的是使用 javascript 请求用户位置并使用 ajax 请求将其发送到服务器。 这个和.Net Core没有关系,只能在浏览器中完成。有很多关于如何做到这一点的问题。 查看应该具有“纬度”和“经度”值的字符串响应。没有看到确切的结构我无法给出一个好的答案。我通常使用 GetElementsByTagName(); 你可以从 httpcontext 中获取 ip 地址,但是你需要找到它,如果你找不到免费的查找,最常见的是通过一些付费服务。并不是说这个ip地址很可靠。 @Jerodev 得到了您的答案:使用 javascript 地理定位 API 在浏览器中获取数据。您还需要一个服务器端组件来接收该信息。如果您愿意,该服务器端项目可以在 C# 中。 【参考方案1】:

您不能直接从 C# 访问它。但是您可以使用 javascript 获取它并提交到您的服务器,以使用 C#:

navigator.geolocation.getCurrentPosition(positionSuccess, positionError)

function positionSuccess (geo)  
  document.cookie = 'latitude=' + geo.coords.latitude;
  document.cookie = 'longitude=' + geo.coords.longitude;
  document.cookie = 'accuracy=' + geo.coords.accuracy;


function positionError (geo)  
  document.cookie = 'latitude=; expires=Thu, 01 Jan 1970 00:00:00 UTC;';
  document.cookie = 'longitude=; expires=Thu, 01 Jan 1970 00:00:00 UTC;';
  document.cookie = 'accuracy=; expires=Thu, 01 Jan 1970 00:00:00 UTC;';

现在,您可以在请求的 cookie 中获取它。

【讨论】:

您好,感谢您的回复。我正在尝试这个……它要求获得位置的许可,所以我很确定零件可以工作……这就是我所做的。我已将 @RenderSection("LocationScript", false/*required*/) 添加到 _layout 中 部分的末尾,然后在视图 (create.cshtml) @section LocationScript 然后我在该文件中创建脚本,如上所述。然后在我的控制器中 [HttpPost] [ValidateAntiForgeryToken] public async Task Create([Bind("ID,FlightName,FlightDate,FlightHours,Location")] FlightData flightData) if (ModelState.IsValid) flightData .UserId = HttpContext.User.Identity.Name; _context.Add(飞行数据); var latitude = Request.Cookies["latitude"];纬度返回为未定义... 操作,我的错。我忘记了回调参数中的“坐标”。像我回答中的新脚本一样更新您的脚本。 你先生是救生员!!!!非常感谢……玩具开始从我的婴儿车里扔了。呼……一整天! 任何 .NET Core/Standard 库可用于 GeoLocation 数据?

以上是关于如何在.net core 2 c#中获取地理位置的主要内容,如果未能解决你的问题,请参考以下文章

从 C# .NET Core(特别是 Workday)调用 Java Web 服务。如何在soap请求中获取xml属性

如何使用 C# 获取已注册的 .NET 组件的位置?

如何从 RSA 公钥 XML 文件 .net core c# 中获取 n 值

如何使用 C# 在 ASP.NET Core 3.1 MVC 中使用会话变量

如何在 C# 页面 ASP.NET Core MVC 上使用 SignInManager 和 Usermanager

如何正确地对 GSM 蜂窝塔进行三角测量以获取位置?