• JS获取经纬度, 并根据经纬度得到城市信息


    在JavaScript中,获取经纬度通常需要使用定位服务,比如HTML5的Geolocation API。然而拿到坐标后,将经纬度转换为城市信息,则需要使用逆地理编码服务接口,比如百度或者高德的 API, 但是他们收费都很高, 我们可以使用一些便宜的接口, 效果一样的。

    以下是一个简单的示例:

    一、获取经纬度

    首先,你需要使用Geolocation API获取用户的经纬度。这需要用户的许可,所以它是一个异步操作。以下是如何获取经纬度的代码:

    navigator.geolocation.getCurrentPosition(function(position) {
        var lat = position.coords.latitude;
        var lon = position.coords.longitude;
        console.log("Latitude: " + lat);
        console.log("Longitude: " + lon);
    }, function(error) {
        console.log("Error occurred. Error code: " + error.code);
        // error.code 可以是:0, 1,或2
    });
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    二、根据经纬度获取城市信息

    然后,你可以使用易客云API将经纬度转换为城市信息。以下是使用此API的示例代码:

    
    DOCTYPE html>
    <html lang="zh-CN" style="height: 100%">
        <head>
            <meta charset="utf-8">
        head>
        <body style="height: 100%; margin: 0">
            <div id="container" style="height: 100%">
            div>
            <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.1/jquery.min.js">
            script>
            <script type="text/javascript">
                $.get('http://apia.yikeapi.com/geocode/?appid=43656176&appsecret=I42og6Lm&output=json&location=116.437039,39.999664',
                function(res) {
                    console.log(res);
                    var json = JSON.parse(res);
                    if (json.errcode == 0) {
                        console.log('当前所在城市:' + json.regeocode.addressComponent.district);
                    }
                });
            script>
        body>
    
    html>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26

    输出结果

    {“errcode”:0,“errmsg”:“success”,“nums”:147,“regeocode”:{“addressComponent”:{“province”:“北京市”,“city”:“北京市”,“district”:“朝阳区”,“adcode”:“110105”}}}
    当前所在城市:朝阳区

    易客云的逆地理编码接口返回的json结构和百度高德一模一样, 但是只支持区县级, 每日5万次级的仅需要三位数, 比5万便宜多啦🌶, 如果不是街道级定位要求, 那可以用这个

    接口返回JSON
    {
        "errcode":0,
        "errmsg":"success",
        "nums":140,
        "regeocode":{
            "addressComponent":{
                "province":"北京市",
                "city":"北京市",
                "district":"朝阳区",
                "adcode":"110105"
            }
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    另外,也请注意,上述操作需要用户允许浏览器访问地理位置信息,这在某些浏览器设置或用户隐私设置中可能被禁用或受限。

  • 相关阅读:
    守护绿色屏障:智能高压森林应急消防泵|恒峰智慧科技
    Spring系列文章3:基于注解方式依赖注入
    地图信息,障碍判断以及寻路算法(A星算法,B星算法和蚁群算法等)
    Python 光速入门课程
    【刷题笔记9.25】LeetCode:合并二叉树
    Leetcode编程事宜
    宿主物种丨Jackson告诉你选择二抗的注意事项
    数据挖掘实战应用案例精讲-【概念篇】数据湖(补充篇)(Data Lake )
    python目录树生成器
    【CV基石】Soft-NMS
  • 原文地址:https://blog.csdn.net/qq_38832501/article/details/133001166