HIGHCHARTS
  • 关于我们
    • 关于我们
    • 联系方式
    • 新闻动态
    • 合作伙伴
  • 在线商店
  • 在线实例
    • Highcharts 演示
    • Highcharts Stock 演示
    • Highcharts Maps 演示
    • Highcharts Gantt 演示
    • 图集new
    • 客户案例
  • 文档教程
    • 使用教程
    • API 文档
    • 兼容性
    • 常见错误
    • 更新日志
  • 服务与支持
    • 获取技术支持
    • 下载中心
    • 地图数据
    • 产品规划
  • 产品中心
    • Highcharts
    • Highcharts Stock
    • Highcharts Map
    • Highcharts iOS
    • Highcharts Android
    • JShare
    • 爱图说
    • Highcharts 云服务
    • Highcharts 编辑器
    • 插件扩展
    • 应用扩展
  • 博客
  • 技术社区
  • 快速上手
    • Highcharts 系列软件简介
    • 1 分钟上手 Highcharts
    • 文件下载与使用
    • 通过 npm 安装
    • 通过 Bower 安装
    • 如何设置图表配置选项
    • Highcharts 兼容性
    • Highcharts 使用协议
  • 基础教程
    • 图表主要组成
    • 图表配置
    • 标题
    • 坐标轴
    • 数据列
    • 颜色
    • 数据提示框
    • 图例
    • 版权信息
    • HTML标签
    • 标示线
    • 标示带
    • 图表缩放
    • 语言文字
    • 标签及字符串格式化
    • 钻取功能
    • 3D 图表
    • 响应式
  • 数据处理
    • 数据处理概述
    • 服务端动态渲染图表
    • Ajax 请求数据接口
    • 处理文本或文本数据文件
    • 数据功能模块
  • 图表类型
    • 图表类型
    • 直线图
    • 曲线图
    • 面积图及面积范围图
    • 柱状图和条形图
    • 饼图
    • 范围图
    • 散点图及气泡图
    • 漏斗图及金字塔图
    • 极地图
    • 瀑布图
    • 误差线图
    • 箱线图
  • 高级特性
    • 堆叠图
    • 自由绘图
    • 国际化
  • 图表导出模块
    • 图表导出模块概述
    • 客户端导出
    • 搭建导出服务器
    • 命令行导出
    • 导出 Excel 数据文件
  • 图表设计及样式
    • 图表设计及样式
    • 颜色
    • 主题
  • 插件扩展
    • 插件扩展概述
    • 创建插件
    • 提交插件到官方插件库
  • 地图(Highmaps)
    • 开始使用 Highmaps
    • 地图数据集
    • 经纬度
    • 地图导航器
  • 股票图(Highstock)
    • 开始使用 Highstock
    • 范围选择器
    • 导航器
    • 滚动条
    • K 线图
    • 技术指标
    • 自定义技术指标
  • 官方扩展包(Vue React Angular iOS Android .NET)
    • Highcharts .NET
    • Highcharts Vue
    • Highcharts React
    • Highcharts Angular
    • Highcharts iOS
    • Highcharts Android
收起菜单 教程目录

经纬度

最后修改时间:2022-12-15 18:35

Highmaps 从 1.1.0 开始支持经纬度定位功能,该功能依赖第三方库 proj4js(需要在 Highmaps 之前引入),最新版的文件可以从 cdnjs 上获取

<script src="https://cdn.bootcdn.net/ajax/libs/proj4js/2.7.2/proj4.js"></script>

有了经纬度支持后,我们可以通过 lon 和 lat 属性来指定经纬度进行描点

series: [{
    type: 'mappoint',
    name: 'cities',
    data: [{
        name: '北京',
        lat: 39.9032724643,   // 经纬度查询请到 http://www.gpsspg.com/maps.htm
        lon: 116.4009203787
    },{
        name: '杭州',
        lon: 120.1551656314,
        lat: 30.2741702308
    }]
}]

中国主要城市经纬度数据

为了方便国内用户使用,我们将国内主要城市(338 个)的经纬度信息收集汇总并转换成 Highmaps 坐标值,最终的结果提供数据接口和文件下载,相关文件及调用方法如下:

  • JSON 文件:https://data.jianshukeji.com/geochina/cities.json
  • JS 文件:https://data.jianshukeji.com/geochina/cities.js

JSON 调用(JSONP)

$.getJSON('https://data.jianshukeji.com/jsonp?filename=geochina/cities.json&callback=?', function(cities) {
     // ...
     series: [{
         type: 'mappoint',
         name: 'cities',
         data: [{
             name: '北京',
             x: cities['北京'].x,   // 直接使用转换好的坐标轴
             y: -cities['北京'].y,
         }]
     }]
})

在线试一试

JS 调用

<script src="https://data.jianshukeji.com/geochina/cities.js"></script>
<script>
    var cities = Highcharts.map['china-cities'],
        mappoint = Highcharts.geojson(cities, 'mappoint');

    // ...
    series: [{
         type: 'mapbubble',
         mapData: mappoint,
         data: [{
             name: '北京',
             z: 1000
         },{
             name: '上海',
             z: 800
         }],
         joinBy: 'name'
    }]        
</script>

在线试一试

经纬度转换

Highmaps 提供了 Chart.transformFromLatLon 和 Chart.transformToLatLon 这个两个函数用于经纬度值和 Highmaps 坐标轴进行互相转换。

在线试一试

如果不想依赖 Highmaps 直接进行经纬度转换,可以使用 proj4js 提供的函数进行转换,下面是简单的示例代码:

<script src="https://cdn.bootcdn.net/ajax/libs/proj4js/2.7.2/proj4.js"></script>
<script>
    // Highmaps 默认的坐标系统参数
    var transform = { 
        "crs": "+proj=lcc +lat_1=18 +lat_2=24 +lat_0=21 +lon_0=114 +x_0=500000 +y_0=500000 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +units=m +no_defs", 
        "scale": 0.000129831107685, 
        "jsonres": 15.5, 
        "jsonmarginX": -999, 
        "jsonmarginY": 9851.0, 
        "xoffset": -3139937.49309, 
        "yoffset": 4358972.7486 
    };

    /**
     * 经纬度转换函数
     * @param float lon 经度
     * @param float lat 纬度
     * @return [x, y]
     */
    function lonlatToXY(lon, lat) {
        if(typeof lon === 'string') {
            lon = parseFloat(lon);
        }

        if(typeof lat === 'string') {
            lat = parseFloat(lat);
        }

        var projected = proj4(transform.crs, [lon, lat]),
            cosAngle = transform.cosAngle || (transform.rotation && Math.cos(transform.rotation)),
            sinAngle = transform.sinAngle || (transform.rotation && Math.sin(transform.rotation)),
            rotated = transform.rotation ? [projected[0] * cosAngle + projected[1] * sinAngle, -projected[0] * sinAngle + projected[1] * cosAngle] : projected;
         return [
              parseInt(((rotated[0] - (transform.xoffset || 0)) * (transform.scale || 1) + (transform.xpan || 0)) * (transform.jsonres || 1) + (transform.jsonmarginX || 0)), 
              -parseInt((((transform.yoffset || 0) - rotated[1]) * (transform.scale || 1) + (transform.ypan || 0)) * (transform.jsonres || 1) - (transform.jsonmarginY || 0))
        ];
    }
</script>

代码来源:Highcharts Github

在线试一试

版权声明

本教程仅用于学习、研究和交流目的,欢迎非商业转载。转载请注明出处及完整的链接。

标题:经纬度 | Highcharts 使用教程

链接:https://www.hcharts.cn/docs/latlon/

   上一篇 下一篇   
  目录
    简数科技微信,同步更新Highcharts教程

    订阅更新

    © 2022 Highcharts 中文官网, 由 简数科技 提供服务, 浙ICP备16004892号-6, 浙公网安备33011002011664号
    在线客服

    选择服务类型

    技术问题

    • 技术社区
    • 技术支持
    • Q Q 群

    商业授权

    • 使用协议
    • 购买授权
    • 申请试用
    • 授权查询

    图表定制

    • 服务内容
    • VIP 专属服务

    销售服务:    技术服务:

    服务热线:0571 - 8620 8605 / 181 0659 5564    邮件:sales@jianshukeji.com

    服务时间:工作日 9:00 ~ 18:00    紧急服务 :7 x 24 响应(仅限电话)

    重要通知!

    尊敬的用户您好:
    由于域名备案调整,我们将于 2023-01-01 ~ 2023-01-07 日陆续停用 highcharts.com.cn 域名,受影响的网站及域名如下:

    网站或服务名称域名替代的网站
    主站www.highcharts.com.cnwww.hcharts.cn
    静态资源服务/CDNcdn.highcharts.com.cn
    code.highcharts.com.cn
    code.hcharts.cn
    img.highcharts.com.cnimg.hcharts.cn
    API 文档api.highcharts.com.cnapi.hcharts.cn
    导出服务export.highcharts.com.cnexport.hcharts.cn

    以上网站服务及 highcharts.com.cn 域名下的网站将于 2023-01-08 日全部下线,未来一段时间将不可访问,后续我们将上线新的网站。

    如果您的应用中有使用到相关服务,请抓紧时间对链接进行调整(特别是静态资源/CDN 服务的链接),以免影响您的网站或应用的正常运行,由此给您带来的不便,敬请谅解。

    如需帮助,请及时与我们联系:0571-86208605 / 18106595564(微信)。

    简数科技 2022-12-22