日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

关于openlaeyrs获取谷歌卫星地图的无偏瓦片

發(fā)布時間:2023/12/18 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 关于openlaeyrs获取谷歌卫星地图的无偏瓦片 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

更新:好像谷歌地圖的瓦片地址khm3這個一直在變化啊,近來變成khm0了,自己也得跟著變化。。。
還有,這兩天發(fā)現(xiàn)天地圖自己的標(biāo)注和無偏googlemap居然是重合的,結(jié)果我國內(nèi)版的谷歌瓦片對應(yīng)不上天地圖的標(biāo)注了。。。他們自己都不用火星坐標(biāo)系的嗎?


谷歌地圖的衛(wèi)星影像在國內(nèi)是偏移的,比如國內(nèi)能訪問的那個http://www.google.cn/maps,還有Google Map API上專門提供給中國的http://maps.google.cn/maps/api/的這兩個都是偏移過的,而https://www.google.com/maps/,以及https://maps.googleapis.com/maps/api就是沒有偏移的。
一個驗證:
中國版的地圖

同一x/y/縮放級別下的國外版的地圖

從資源里面找到同一個xyz的瓦片看一下
中國的

國外的

可以發(fā)現(xiàn)兩點:

  • 請求瓦片的時候,發(fā)送的是Web Mercator下地圖顯示中心的經(jīng)緯度結(jié)合瓦片的長寬算出的一個值。請求國內(nèi)/國外的地址,發(fā)回的對應(yīng)的瓦片就是偏移/未偏移的。
  • 道路圖層聽說是國內(nèi)哪家合作提供的,因此和偏移過的瓦片是重合的。
  • 由于我這邊是想和影像做一些疊加,所以坐標(biāo)必須是無偏的。看了一下國外的訪問地址是https://khms3.google.com/kh/v=726?x=28415&y=11580&z=15
    這個v有人猜測是版本號,我也不知道。。。改了一下openlayers的瓦片獲取程序,感覺偏移基本沒了。
    而網(wǎng)上比較流行的一個地址是http://mt1.google.cn/maps/vt,要有一個layers是s@110,這個就有偏了。。。但是和國內(nèi)的服務(wù)都是契合的
    稍微改一下openlayers獲取瓦片的class,url就是https://khm3.google.com/kh

    OpenLayers.Layer.GoogleLayer2 = OpenLayers.Class(OpenLayers.Layer.XYZ, {url: null,tileOrigin: null,tileSize: new OpenLayers.Size(256, 256),type: 'png',useScales: false,overrideDPI: false,initialize: function(name, url, options) {this.v = options.v;OpenLayers.Layer.XYZ.prototype.initialize.apply(this, arguments);},getURL: function(bounds) {var res = this.getResolution();var originTileX = (this.tileOrigin.lon + (res * this.tileSize.w / 2));var originTileY = (this.tileOrigin.lat - (res * this.tileSize.h / 2));var center = bounds.getCenterLonLat();var x = (Math.round(Math.abs((center.lon - originTileX) / (res * this.tileSize.w))));var y = (Math.round(Math.abs((originTileY - center.lat) / (res * this.tileSize.h))));var z = this.map.getZoom();var url = this.url;var s = '' + x + y + z;if (OpenLayers.Util.isArray(url)) {url = this.selectUrl(s, url);}url = url + '/v=${v}&?&x=${x}&y=${y}&z=${z}'; //&L=4&X=12&Y=3url = OpenLayers.String.format(url, { 'v': this.v, 'x': x, 'y': y, 'z': z });return OpenLayers.Util.urlAppend(url, OpenLayers.Util.getParameterString(this.params));},CLASS_NAME: 'OpenLayers.Layer.GoogleLayer2' });

    幾個參考:http://blog.csdn.net/aliqing777/article/details/9818985
    http://www.sosaw.com/threads-296984-1-1.html
    https://stackoverflow.com/questions/7200682/why-have-these-google-satellite-map-tile-links-stopped-working

    總結(jié)

    以上是生活随笔為你收集整理的关于openlaeyrs获取谷歌卫星地图的无偏瓦片的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。