高清在线一区二区_激情网在线观看_激情一区二区三区_精品中文一区_亚洲中字幕_亚洲天堂一区

  谷歌離線地圖 教程

地圖投影

編輯時間:2017-03-06

投影

地球是一個三維球體(近似說法),而地圖則是一個二維平面。您在 Google Maps API 中看到的地圖與其他的

地球平面地圖一樣,都是地球在平面上的投影。簡單來說,投影可定義為緯度/經(jīng)度值在投影地圖的坐標上的映

射。

Google Maps API 中的投影必須實現(xiàn) Projection 接口。Projection 實現(xiàn)必須能提供坐標系之間的單向映射

和雙向映射。也就是說,您必須定義地球坐標 (LatLng) 和 Projection 的世界坐標系之間雙向轉(zhuǎn)換的方法。

Google Maps 使用墨卡托投影法來根據(jù)地理數(shù)據(jù)創(chuàng)建地圖,并將地圖上的事件轉(zhuǎn)換為地理坐標。您可以通過

 Map(或任何標準的基本 MapType)上調(diào)用 getProjection() 以獲取該投影。對于大部分用途來說,該標

 Projection 已經(jīng)足夠,不過您也可以定義和使用您自己的自定義投影。


實現(xiàn)投影

在實現(xiàn)自定義投影時,您需要定義以下內(nèi)容:

  • 用于實現(xiàn)緯度和經(jīng)度坐標與笛卡爾平面之間雙向映射的公式。(Projection 接口僅支持向直線坐標的轉(zhuǎn)換)。


  • 基本圖塊大小。所有圖塊必須為矩形。


  • 縮放級別為 0 且使用基本圖塊集的地圖的“世界大小”。請注意:對于縮放級別為 0 且僅由一個圖塊構(gòu)

    成的地圖,其世界大小和基本圖塊大小是相同的。

投影中的坐標轉(zhuǎn)換

每個投影都提供了兩種方法,讓您可以在地理坐標和世界坐標這兩個坐標系之間進行轉(zhuǎn)換:

  • Projection.fromLatLngToPoint() 方法將 LatLng 值轉(zhuǎn)換為世界坐標。此方法用于在地圖上定位疊層(同


  • 時定位地圖本身)。


  • Projection.fromPointToLatLng() 方法將世界坐標轉(zhuǎn)換為 LatLng 值。此方法用于將地圖上發(fā)生的事(如



    點擊)轉(zhuǎn)換為地理坐標。


Google Maps 假設投影是直線的。


    通常,您可以在兩種情況下使用投影:創(chuàng)建世界地圖或創(chuàng)建局部區(qū)域地圖。在前一種情況下,您應確保

投影在所有經(jīng)度上都為直線且與經(jīng)度垂直。某些投影(尤其是圓錐投影)可能為“局部垂直”(即指向北方),

例如,當該地圖定位相對于某些參考經(jīng)度較遠時就會偏離正北。您可以在局部區(qū)域使用此類投影,但請注意,該

投影肯定是不精確的,且越偏離參考經(jīng)度,轉(zhuǎn)換誤差就會越明顯。

投影中的地圖圖塊選擇

    投影不僅可用于確定位置或疊層的位置,還可用于定位地圖圖塊本身。Maps API 使用 MapType 接口

來呈現(xiàn)基本地圖,該接口必須同時聲明 projection 屬性(用于識別地圖的投影)和 getTile() 方法(用于

根據(jù)圖塊坐標值檢索地圖圖塊)。圖塊坐標以您的基本圖塊大小(必須為矩形)和地圖的“世界大小”(縮放級

別為 0 時的地圖世界的像素大小)為基礎。(對于縮放級別為 0 且僅由一個圖塊構(gòu)成的地圖,其圖塊大小和世

界大小是相等的)。

您可以在 MapType  tileSize 屬性內(nèi)定義基本圖塊大小。在投影的 fromLatLngToPoint() 

fromPointToLatLng() 方法中隱式定義世界大小。

由于需要根據(jù)這些傳遞的值選擇圖像,因此,為圖像命名可方便系統(tǒng)基于給定的傳遞值以編程方式選擇圖像,如

map_zoom_tileX_tileY.png

常見投影 墨卡托  經(jīng)緯直投,由于谷歌地圖API本身就是墨卡托投影,所以此處給出加載 經(jīng)緯直投 方式

的加載瓦片算法(加載天地圖的經(jīng)緯直投瓦片)


function BigeMap() {

}
BigeMap.prototype.tileSize = new google.maps.Size(256, 256);
BigeMap.prototype.maxZoom = 19;
BigeMap.prototype.minZoom = 1;
BigeMap.prototype.name = "本地地圖";
BigeMap.prototype.getTile = function (coord, zoom, ownerDocument) {
   
var img = ownerDocument.createElement("img"),url='',server = Math.floor(Math.random() * 8);
   
img.style.width = 256 + "px";
   
img.style.height = 256 + "px";
   
url='http://t' + server + '.tianditu.cn/cva_c/wmts?service=wmts&request=GetTile&version=1.0.0&LAYER=cva&tileMatrixSet=c&TileMatrix=' + zoom + '&TileRow=' + coord.y + '&TileCol=' +coord.x + '&style=default&format=tiles';
   
img.src=url;
   
var bg='http://t' + server + '.tianditu.cn/vec_c/wmts?service=wmts&request=GetTile&version=1.0.0&LAYER=vec&tileMatrixSet=c&TileMatrix=' + zoom + '&TileRow=' + coord.y + '&TileCol=' + coord.x + '&style=default&format=tiles';
   
img.style.backgroundImage='url('+bg+')';
   
return img;
};

BigeMap.prototype.projection ={
   
fromLatLngToPoint: function(latLng) {
     
return new google.maps.Point(
          256
* (0.5 + latLng.lng() / 360),
          128
*(90 - latLng.lat()) / 180
          );
   
},
   
fromPointToLatLng: function(point, noWrap) {
     
return new google.maps.LatLng(
        90
- point.y / 128  * 180 ,
       
-180 + point.x / 256 * 360,
        noWrap);
   
}
}
;



主站蜘蛛池模板: 欧美大胆xxxx肉体摄影 | 91午夜视频 | 成人在线不卡 | 逼片视频| 亚洲资源在线 | 免费久久久久久 | 青青草国产在线视频 | 欧美大片一级毛片 | 精品三级内地国产在线观看 | 成人在线免费视频观看 | 日韩伦理电影免费观看 | 欧美四级在线观看 | 免费视频观看 | 中文字幕专区高清在线观看 | 毛毛片在线看 | 国产精品视频成人 | 成人性生活视频 | gril hd | 黄网站在线免费 | 韩国精品视频在线观看 | 国产高潮好爽好大受不了了 | 精品久久久久久久久中文字幕 | 久久久久久精 | 亚洲网站在线观看视频 | 欧美精品一区自拍a毛片在线视频 | 日本xxxx色视频在线观看免费, | 91九色视频在线播放 | 日韩视频一 | 亚洲天堂中文字幕在线观看 | 欧美成人免费电影 | 精品午夜久久 | 国产精品久久久久久久久久电影 | 黄色a级片视频 | 一本色道久久99精品综合蜜臀 | 色悠悠久久久久 | 免费观看视频91 | 欧美日韩在线免费观看 | 亚洲视频在线观看免费视频 | 美女羞羞视频在线观看 | 少妇av片 | h久久 |