ol地图小方法

本文介绍了在OpenLayers(ol)中处理地理坐标转换的方法,包括使用`transform`函数在不同投影间转换,如从EPSG:4326到EPSG:3857。同时,讨论了如何使用`newGeoJSON`和`Overlay`组件来调整弹窗的默认位置,实现更美观的显示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

起因是ol原生的位置转换使用起来有误差,自己手搓一个

   // 定义一个函数来计算两点之间的直线距离
        calculateDistance(point1, point2) {
            const deltaX = point2[0] - point1[0]; // 计算横向距离差
            const deltaY = point2[1] - point1[1]; // 计算纵向距离差
            const distance = Math.sqrt(deltaX * deltaX + deltaY * deltaY); // 应用欧几里得距离公式
            return distance;
        },

数据编码格式转换

import { transform, get } from "ol/proj";
//坐标,源投影,目标投影
transform(coordinate, 'EPSG:4326', 'EPSG:3857')
//坐标,源投影,目标投影
transform(coordinate, 'EPSG:4326', 'EPSG:3857')
//如果是 geoJSON数据格式转换,则MultiPolygon和Polygon方法可以直接点出transform方法直接转换。
geometry: new MultiPolygon(
    lineData.geometry.coordinates
).transform("EPSG:4326", "EPSG:3857")
//或者
geometry: new Polygon(
	lineData.geometry.coordinates
).transform("EPSG:4326", "EPSG:3857")



//使用 new GeoJSON().readFeatures方法时,默认的是4326编码,如果想转换编码格式的话加一个参数
 const fts = new GeoJSON().readFeatures(data, {
                dataProjection: 'EPSG:4326',
                featureProjection: 'EPSG:3857',
            });

设置弹窗偏移,默认的弹窗是左上角出现在我们的点击位置,不太美观需要相对调整一下 

  import { Overlay} from 'ol';

const popupOverlay = new Overlay({
                element: document.getElementById("contextmenu"),
                positioning: 'bottom-center',
                stopEvent: false,
                visible: false,
                offset: [-150, -200], // 弹窗位置的偏移量,向上偏移 200 像素,向右150
            });

持续更新

### 百度地图API在Oracle Linux 6中的集成方法 要在 Oracle Linux 6 (OL6) 中集成并使用百度地图 API 进行开发,主要涉及以下几个方面: #### 1. **环境准备** 由于 OL6 的软件包管理工具 `yum` 提供的默认库可能较旧,因此需要手动安装一些依赖项来支持现代 Web 开发框架。具体操作包括更新系统以及安装必要的开发工具。 - 更新系统以确保基础组件是最新的: ```bash sudo yum update -y ``` - 安装基本的开发工具链(如 GCC 和 Python),以便后续能够运行脚本和服务: ```bash sudo yum groupinstall "Development Tools" -y ``` 注意,在 OL6 上,默认情况下可能会遇到编译器版本过低的问题[^4]。可以通过启用 Software Collections (SCL) 来获取更高版本的 GCC 工具集。 --- #### 2. **安装 HTTP 请求库** 为了调用百度地图 API,通常会通过编程语言发送 HTTP 请求并与服务端交互。以下是几种常见的方式及其所需依赖项: - 如果使用的是 Python,则需先安装 pip 并引入 requests 库: ```bash curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py python get-pip.py pip install requests ``` - 对于 Node.js 用户来说,推荐采用 npm 安装 axios 或其他类似的模块: ```bash curl --silent --location https://rpm.nodesource.com/setup_10.x | bash - yum install nodejs -y npm install axios ``` 上述命令适用于大多数基于 RPM 的发行版,但在某些特定场景下可能还需要额外调整配置文件路径或者权限设置等问题[^5]。 --- #### 3. **申请百度地图 API Key** 访问 [百度开放平台](https://lbsyun.baidu.com/) 注册账号后即可创建应用获得专属密钥。该密钥用于身份验证过程当中,每次请求都需要附带它作为参数传递给目标 URL 地址。 例如构建一个简单的查询地理编码接口实例代码片段如下所示(假设已成功导入相应类库): ```python import requests def geocode(address): url = 'http://api.map.baidu.com/geocoding/v3/' params = { 'address': address, 'output': 'json', 'ak': 'YOUR_API_KEY' # 替换为实际取得的应用程序秘钥 } response = requests.get(url,params=params).json() if response['status'] == 0: location = response['result']['location'] return f"{address} -> 经纬度({location['lng']},{location['lat']})" else: raise Exception('Error:',response) print(geocode('北京市海淀区')) ``` 以上示例展示了如何利用 RESTful 风格的服务实现地理位置转换功能[^1]。 --- #### 4. **部署至生产环境** 完成本地测试之后就可以考虑将其上线正式服务器上去了。考虑到安全性因素建议采取 HTTPS 协议保护数据传输过程中不被窃取篡改;另外还可以借助反向代理机制隐藏真实 IP 地址从而增强隐私防护能力[^2]。 最后记得定期检查日志记录及时发现潜在隐患并作出响应处理措施哦! --- ###
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值