我尝试使用谷歌 api 在我的网站上制作地图,但现在要使用它,你必须支付相当多的费用。 无论如何,我发现OpenLayers api和它很酷,但是当我请求地图以我当前的位置为中心时,地图不再渲染.-。 我在控制台中没有收到任何错误,我什至使用了承诺,因此一旦获得坐标,地图将开始渲染。
这是我的索引.js代码
import 'ol/ol.css';
import { Map, View } from 'ol';
import TileLayer from 'ol/layer/Tile';
import OSM from 'ol/source/OSM';
var lng;
var lat;
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(function (position) {
lat = Promise.resolve(position.coords.latitude);
lng = Promise.resolve(position.coords.longitude);
Promise.all([lat, lng]).then((res) => {
console.log(res);
const map = new Map({
target: 'map',
layers: [
new TileLayer({
source: new OSM()
})
],
view: new View({
center: [lat, lng],
zoom: 0
})
});
})
})
}
这是我的 html 代码
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Using Parcel with OpenLayers</title>
<style>
#map {
width: 100%;
height: 100%;
}
</style>
</head>
<body>
<div id="map"></div>
<script src="./index.js"></script>
</body>
</html>
为了运行所有这些,我正在使用节点,如果我从条件中取出常量地图,则地图将显示,但这不是我想看到的中心:D
OpenLayers 映射的默认投影是EPSG:3857
。地理位置 API 接收的坐标采用投影EPSG:4326
。
您需要将接收到的坐标转换为EPSG:3857
(例如使用 fromLonLat(或将地图的投影设置为EPSG:4326
。