首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >反应传单-layer控制-satellite视图

反应传单-layer控制-satellite视图
EN

Stack Overflow用户
提问于 2021-10-13 15:47:36
回答 1查看 1.9K关注 0票数 2

我想使用我的反应项目传单地图,我想添加一个层控制,用户可以切换之间的街道视图和卫星视图。我试图使用谷歌的卫星视图,但它似乎不起作用。

这是我的密码

代码语言:javascript
复制
function App() {
  
  return (
    <div className="App">
      <MapContainer center={[40.44695, -345.23437]} zoom={2}>
        <LayersControl>
          <BaseLayer checked name="OpenStreetMap">
            <TileLayer
              url="https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png"
              attribution='&copy; <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors'
            />
          </BaseLayer>

          <BaseLayer name="Satellite View">
            <TileLayer
                url='https://{s}.google.com/vt/lyrs=s&x={x}&y={y}&z={z}'
                maxZoom= {20}
              />
            
          </BaseLayer>
        </LayersControl>
      </MapContainer>
    </div>
  );
}

export default App;

卫星视图

非常感谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-10-14 17:08:29

用于谷歌地图的贴片url不存在:

https://{s}.google.com/vt/lyrs=s&x={x}&y={y}&z={z}

从传单文件中:

{s}是指可用子域之一(用于帮助处理每个域限制的浏览器并行请求;子域值在选项中指定;默认情况下可以省略a、b或c)、{z} -缩放级别、{x}和{y} -瓷砖坐标。{r}可用于在URL中添加"@2x“以加载视网膜块。

您请求的urls使用的是默认子域abc,这些子域似乎都已损坏:

看起来正确的子域是mt1mt2mt3。您可以使用subdomains支柱指定它们:

代码语言:javascript
复制
<TileLayer
   url='https://{s}.google.com/vt/lyrs=s&x={x}&y={y}&z={z}'
   maxZoom= {20}
   subdomains={['mt1','mt2','mt3']}
/>

https://mt1.google.com/vt/lyrs=s&x=1&y=1&z=1

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69558520

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档