Javascript OpenLayers贴图未渲染

Javascript OpenLayers贴图未渲染,javascript,html,node.js,openlayers,Javascript,Html,Node.js,Openlayers,我曾尝试使用谷歌api在我的网站上制作一张地图,但是现在要使用它,你需要付出相当多的代价。 无论如何,我发现OpenLayers api和它很酷,但是当我请求地图以我的当前位置为中心时,地图就不再渲染了。 我的控制台中没有错误,我甚至使用了Promissions,这样一旦获得坐标,地图就会开始渲染 这是我的index.js代码 import 'ol/ol.css'; import { Map, View } from 'ol'; import TileLayer from 'ol/layer/T

我曾尝试使用谷歌api在我的网站上制作一张地图,但是现在要使用它,你需要付出相当多的代价。 无论如何,我发现OpenLayers api和它很酷,但是当我请求地图以我的当前位置为中心时,地图就不再渲染了。 我的控制台中没有错误,我甚至使用了Promissions,这样一旦获得坐标,地图就会开始渲染

这是我的index.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>

使用带有OpenLayers的地块
#地图{
宽度:100%;
身高:100%;
}

为了运行所有这些,我正在使用node,如果我从条件中获取const映射,映射将显示,但这不是我希望看到的中心:D

OpenLayers映射的默认投影是
EPSG:3857
。地理定位API接收到的坐标位于投影中
EPSG:4326


您需要将收到的坐标转换为
EPSG:3857
(例如,使用),或者将地图的投影设置为
EPSG:4326

,OpenLayers默认使用,并且您正在尝试向其提供GPS坐标(顺便说一句,顺序错误)。使用
fromlonat
功能转换位置。另外,请阅读什么是投影以及它们是如何工作的。即使设置了正确的投影,地图也不会渲染