yangyanggu / vue-amap

高德地图封装 for vue2 vue3.0
https://vue-amap.guyixi.cn/
MIT License
287 stars 17 forks source link

自定义图层使用 url 连接,会自动将 http 协议转换成 https 协议 #11

Closed savelifeme closed 2 years ago

savelifeme commented 2 years ago

使用 vue3 + ts

期望结果:使用 http 协议不进行协议装换;

代码:

<el-amap
      vid={"amap-vue"}
      onInit={(m: any) => this.init(m)}
      onClick={(m: any) => this.mapAddMark(m)}
      center={this.center}
 >
      <el-amap-layer-tile
          tile-url={
            "http://192.168.62.6:29980/tSlice?x=[x]&y=[y]&z=[z].png"
          }
          visible
          tileSize={256}
          zIndex={1}
          zooms={[11, 16]}
        ></el-amap-layer-tile>
</el-amap>

实际效果: image

yangyanggu commented 2 years ago

这个代码里肯定没有转换的,看着像是浏览器转的,你用的chrome?

savelifeme commented 2 years ago

@yangyanggu 对,使用的是chrome 103.0.5060.114(正式版本),感觉没有转换吧。 对了, 我们项目使用的是vite+vue3+tsx ,难道是框架自己转的?

yangyanggu commented 2 years ago

就插件本身而言不会去做这种转换工作,你可以试试其他浏览器会不会有这个问题

savelifeme commented 2 years ago

就插件本身而言不会去做这种转换工作,你可以试试其他浏览器会不会有这个问题

嗯是的,应该是 浏览器转换或者项目配置了转换代码,刚才查了查百度,应该是项目哪里配置自动转换的代码了,但是不确定什么原因导致的, 所以我使用了 vueCli 重新创建了一个项目,结果还是会自动转换为 https 协议;继续踩坑吧 [摊手]

yangyanggu commented 2 years ago

大概率是浏览器转,配置的话应该不会干这个事

savelifeme commented 2 years ago

@yangyanggu 已解决

猜测应是浏览器自动转换造成的 可以使用getTileUrl 返回 url 使用,官方也没有说出区别,但 getTileUrl 就可以使用 image

1》切片资源不跨域 ,必须使用getTileUrl 使用 function 函数 方法 返回 url

image

2》切片资源跨域,使用代理,再使用getTileUrl 使用 function 函数 方法 返回 url

proxy: {
  GIS: {
    target: VITE_GIS_HOST,
      changeOrigin: true,
        rewrite: (path) => path.replace(/^\/GIS /, ""),
  },
},

image

最终结果: image

yangyanggu commented 2 years ago

可以,解决了就行