Genel bakış
Harita başlatılırken heading
ve tilt
özelliklerini ekleyip, haritadaki setTilt
ve setHeading
yöntemlerini çağırarak vektör haritasında eğim ve döndürmeyi (başlık) ayarlayabilirsiniz. Aşağıdaki örnekte haritaya, eğim ve yönü 20 derecelik artışlarla programatik olarak ayarlayan bazı düğmeler eklenmiştir.
TypeScript
function initMap(): void { const map = new google.maps.Map( document.getElementById("map") as HTMLElement, { center: { lat: 37.7893719, lng: -122.3942, }, zoom: 16, heading: 320, tilt: 47.5, mapId: "90f87356969d889c", } ); const buttons: [string, string, number, google.maps.ControlPosition][] = [ ["Rotate Left", "rotate", 20, google.maps.ControlPosition.LEFT_CENTER], ["Rotate Right", "rotate", -20, google.maps.ControlPosition.RIGHT_CENTER], ["Tilt Down", "tilt", 20, google.maps.ControlPosition.TOP_CENTER], ["Tilt Up", "tilt", -20, google.maps.ControlPosition.BOTTOM_CENTER], ]; buttons.forEach(([text, mode, amount, position]) => { const controlDiv = document.createElement("div"); const controlUI = document.createElement("button"); controlUI.classList.add("ui-button"); controlUI.innerText = `${text}`; controlUI.addEventListener("click", () => { adjustMap(mode, amount); }); controlDiv.appendChild(controlUI); map.controls[position].push(controlDiv); }); const adjustMap = function (mode: string, amount: number) { switch (mode) { case "tilt": map.setTilt(map.getTilt()! + amount); break; case "rotate": map.setHeading(map.getHeading()! + amount); break; default: break; } }; } declare global { interface Window { initMap: () => void; } } window.initMap = initMap;
JavaScript
function initMap() { const map = new google.maps.Map(document.getElementById("map"), { center: { lat: 37.7893719, lng: -122.3942, }, zoom: 16, heading: 320, tilt: 47.5, mapId: "90f87356969d889c", }); const buttons = [ ["Rotate Left", "rotate", 20, google.maps.ControlPosition.LEFT_CENTER], ["Rotate Right", "rotate", -20, google.maps.ControlPosition.RIGHT_CENTER], ["Tilt Down", "tilt", 20, google.maps.ControlPosition.TOP_CENTER], ["Tilt Up", "tilt", -20, google.maps.ControlPosition.BOTTOM_CENTER], ]; buttons.forEach(([text, mode, amount, position]) => { const controlDiv = document.createElement("div"); const controlUI = document.createElement("button"); controlUI.classList.add("ui-button"); controlUI.innerText = `${text}`; controlUI.addEventListener("click", () => { adjustMap(mode, amount); }); controlDiv.appendChild(controlUI); map.controls[position].push(controlDiv); }); const adjustMap = function (mode, amount) { switch (mode) { case "tilt": map.setTilt(map.getTilt() + amount); break; case "rotate": map.setHeading(map.getHeading() + amount); break; default: break; } }; } window.initMap = initMap;
CSS
/* * Always set the map height explicitly to define the size of the div element * that contains the map. */ #map { height: 100%; } /* * Optional: Makes the sample page fill the window. */ html, body { height: 100%; margin: 0; padding: 0; } .ui-button { background-color: #fff; border: 0; border-radius: 2px; box-shadow: 0 1px 4px -1px rgba(0, 0, 0, 0.3); margin: 10px; padding: 0 0.5em; font: 400 18px Roboto, Arial, sans-serif; overflow: hidden; height: 40px; cursor: pointer; } .ui-button:hover { background: rgb(235, 235, 235); }
HTML
<html> <head> <title>Tilt and Rotation</title> <script src="https://polyfill.io/v3/polyfill.min.js?features=default"></script> <link rel="stylesheet" type="text/css" href="./style.css" /> <script type="module" src="./index.js"></script> </head> <body> <div id="map"></div> <!-- The `defer` attribute causes the callback to execute after the full HTML document has been parsed. For non-blocking uses, avoiding race conditions, and consistent behavior across browsers, consider loading using Promises. See https://developers.google.com/maps/documentation/javascript/load-maps-js-api for more information. --> <script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyB41DRUbKWJHPxaFjMAwdrzWzbVKartNGg&callback=initMap&v=beta" defer ></script> </body> </html>
Örneği Deneyin
Fare ve klavye hareketlerini kullanma
Fare ve klavyeyi kullanarak eğme ve döndürme ayarlarını yapabilirsiniz:
- Fareyi kullanarak üst karakter tuşunu basılı tutun, ardından başlığı ayarlamak için sağ ve sola doğru tıklayıp yukarı ve aşağı sürükleyin.
- Klavyeyi kullanarak üst karakter tuşunu basılı tutun, ardından eğmeyi ayarlamak için yukarı ve aşağı ok tuşlarını, başlığı ayarlamak için sağ ve sol ok tuşlarını kullanın.
Yatırmayı ve başlığı programatik olarak ayarlama
Bir vektör haritasındaki eğim ve yönü programatik olarak ayarlamak için setTilt()
ve setHeading()
yöntemlerini kullanın. Yön, kuzeyden itibaren kameranın baktığı yöndür. Bu nedenle map.setHeading(90)
, doğu yönü yukarıya bakacak şekilde haritayı döndürür. Eğme açısı zenitten ölçülür. Bu durumda map.setTilt(0)
doğrudan aşağı bakarken map.setTilt(45)
eğik bir görünüme neden olur.
- Haritanın eğim açısını ayarlamak için
setTilt()
numaralı telefonu arayın. Geçerli yatırma değerini almak içingetTilt()
kullanın. - Haritanın başlığını ayarlamak için
setHeading()
numaralı telefonu arayın. Mevcut başlık değerini almak içingetHeading()
değerini kullanın.
Yatırmayı ve yönü korurken harita merkezini değiştirmek için map.setCenter()
veya map.panBy()
tuşlarını kullanın.
Kullanılabilen açı aralığının mevcut yakınlaştırma seviyesine göre değiştiğini unutmayın. Bu aralığın dışındaki değerler, şu anda izin verilen aralığa ayarlanır.
Başlığı, eğmeyi, ortalamayı ve yakınlaştırmayı programatik olarak değiştirmek için moveCamera
yöntemini de kullanabilirsiniz. Daha fazla bilgi edinin.
Diğer yöntemler üzerindeki etkisi
Haritaya eğim veya döndürme uygulandığında diğer Maps JavaScript API yöntemlerinin davranışı etkilenir:
map.getBounds()
her zaman görünür bölgeyi içeren en küçük sınırlayıcı kutuyu döndürür. Eğim uygulandığında, döndürülen sınırlar haritanın görüntü alanının görünür bölgesinden daha büyük bir bölgeyi temsil edebilir.map.fitBounds()
, sınırlar uygulanmadan önce eğim ve yönü sıfırlar.map.panToBounds()
, sınırları kaydırmadan önce eğim ve başlığı sıfırlar.map.setTilt()
tüm değerleri kabul eder, ancak geçerli harita yakınlaştırma düzeyine göre maksimum eğimi kısıtlar.map.setHeading()
tüm değerleri kabul eder ve [0, 360] aralığına sığacak şekilde değiştirir.