Giriş
İşaretçi, haritada bir konumu tanımlar. İşaretçilerde varsayılan olarak standart bir resim kullanılır. İşaretçilerde özel resimler gösterilebilir. Bu durumda işaretçilere genellikle "simge" denir. İşaretler ve simgeler Marker
türündeki nesnelerdir. İşaretçinin kurucusundan veya işaretçide setIcon()
'yi çağırarak özel bir simge ayarlayabilirsiniz. İşaretçi resmini özelleştirme hakkında daha fazla bilgi edinin.
Genel olarak belirtmek gerekirse işaretçiler bir tür yer paylaşımıdır. Diğer yer paylaşımı türleri hakkında bilgi edinmek için Haritada çizim yapma başlıklı makaleyi inceleyin.
İşaretler etkileşimli olacak şekilde tasarlanmıştır. Örneğin, varsayılan olarak 'click'
etkinliği alırlar. Bu nedenle, özel bilgileri gösteren bir bilgi penceresi açmak için bir etkinlik dinleyici ekleyebilirsiniz. İşaretçinin draggable
mülkünü true
olarak ayarlayarak kullanıcıların harita üzerinde bir işaretçiyi hareket ettirmesine izin verebilirsiniz. Taşınabilir işaretçiler hakkında daha fazla bilgi için aşağıya bakın.
İşaretçi ekleyin
google.maps.Marker
sınıfının yapıcısı, işaretçinin ilk özelliklerini belirten tek bir Marker options
nesne değişmezi alır.
Aşağıdaki alanlar özellikle önemlidir ve genellikle bir işaretçi oluştururken ayarlanır:
-
position
(zorunlu) işaretçinin ilk konumunu tanımlayan birLatLng
belirtir.LatLng
değerini almanın bir yolu da coğrafi kodlama hizmetini kullanmaktır. -
map
(isteğe bağlı) işaretçinin yerleştirileceğiMap
değerini belirtir. İşaretçiyi oluştururken haritayı belirtmezseniz işaretçi oluşturulur ancak haritaya eklenmez (veya haritada gösterilmez). İşaretçiyi daha sonra işaretçininsetMap()
yöntemini çağırarak ekleyebilirsiniz.
Aşağıdaki örnekte, Avustralya'nın merkezindeki Uluru'ya ait bir haritaya basit bir işaretçi eklenmektedir:
TypeScript
function initMap(): void { const myLatLng = { lat: -25.363, lng: 131.044 }; const map = new google.maps.Map( document.getElementById("map") as HTMLElement, { zoom: 4, center: myLatLng, } ); new google.maps.Marker({ position: myLatLng, map, title: "Hello World!", }); } declare global { interface Window { initMap: () => void; } } window.initMap = initMap;
JavaScript
function initMap() { const myLatLng = { lat: -25.363, lng: 131.044 }; const map = new google.maps.Map(document.getElementById("map"), { zoom: 4, center: myLatLng, }); new google.maps.Marker({ position: myLatLng, map, title: "Hello World!", }); } window.initMap = initMap;
Örneği Deneyin
Yukarıdaki örnekte, işaretçi seçeneklerindeki map
özelliği kullanılarak işaretçi oluşturulurken işaretçi haritaya yerleştirilir.
Alternatif olarak, işaretçinin setMap()
yöntemini kullanarak işaretçiyi doğrudan haritaya ekleyebilirsiniz. Aşağıdaki örnekte bu yöntem gösterilmektedir:
var myLatlng = new google.maps.LatLng(-25.363882,131.044922); var mapOptions = { zoom: 4, center: myLatlng } var map = new google.maps.Map(document.getElementById("map"), mapOptions); var marker = new google.maps.Marker({ position: myLatlng, title:"Hello World!" }); // To add the marker to the map, call setMap(); marker.setMap(map);
İşaretçinin title
simgesi ipucu olarak gösterilir.
İşaretçinin oluşturucusuna herhangi bir Marker options
geçirmek istemiyorsanız bunun yerine, oluşturucunun son bağımsız değişkenine boş bir nesne {}
gönderin.
İşaretçiyi kaldırma
Bir işaretçiyi haritadan kaldırmak için null
bağımsız değişkeni olarak göndererek setMap()
yöntemini çağırın.
marker.setMap(null);
Yukarıdaki yöntemin işaretçiyi silmediğini unutmayın. İşaretçiyi haritada kaldırır. Bunun yerine işaretçiyi silmek istiyorsanız işaretçiyi haritadan kaldırmanız ve ardından işaretçiyi null
olarak ayarlamanız gerekir.
Bir işaretçi grubunu yönetmek istiyorsanız işaretçileri tutacak bir dizi oluşturmanız gerekir. Bu diziyi kullanarak, işaretçileri kaldırmanız gerektiğinde dizindeki her işaretçi için sırayla setMap()
işlevini çağırabilirsiniz. İşaretçileri haritadan kaldırıp dizideki length
değerini 0
olarak ayarlayarak silebilirsiniz. Bu işlem, işaretçilere yapılan tüm referansları kaldırır.
İşaretçi resmini özelleştirme
Varsayılan Google Haritalar raptiye simgesi yerine görüntülemek istediğiniz resim dosyasını veya vektor tabanlı simgeyi belirterek işaretçilerin görsel görünümünü özelleştirebilirsiniz. İşaretçi etiketi ile metin ekleyebilir, tıklanabilir bölgeleri tanımlamak ve işaretçilerin yığın sırasını ayarlamak için karmaşık simgeler kullanabilirsiniz.
Resim simgeli işaretçiler
En basit durumda, bir simge, varsayılan Google Haritalar raptiye simgesi yerine kullanılacak bir resim belirtebilir. Bu tür bir simge belirtmek için işaretçinin icon
özelliğini bir resmin URL'sine ayarlayın. Maps JavaScript API, simgeyi otomatik olarak boyutlandırır.
TypeScript
// This example adds a marker to indicate the position of Bondi Beach in Sydney, // Australia. function initMap(): void { const map = new google.maps.Map( document.getElementById("map") as HTMLElement, { zoom: 4, center: { lat: -33, lng: 151 }, } ); const image = "https://developers.google.com/maps/documentation/javascript/examples/full/images/beachflag.png"; const beachMarker = new google.maps.Marker({ position: { lat: -33.89, lng: 151.274 }, map, icon: image, }); } declare global { interface Window { initMap: () => void; } } window.initMap = initMap;
JavaScript
// This example adds a marker to indicate the position of Bondi Beach in Sydney, // Australia. function initMap() { const map = new google.maps.Map(document.getElementById("map"), { zoom: 4, center: { lat: -33, lng: 151 }, }); const image = "https://developers.google.com/maps/documentation/javascript/examples/full/images/beachflag.png"; const beachMarker = new google.maps.Marker({ position: { lat: -33.89, lng: 151.274 }, map, icon: image, }); } window.initMap = initMap;
Örneği Deneyin
Vektör tabanlı simgelerin bulunduğu işaretçiler
İşaretçilerin görsel görünümünü tanımlamak için özel SVG vektör yollarını kullanabilirsiniz. Bunu yapmak için işaretçinin icon
özelliğine istenen yolu içeren bir Symbol
SVG yol gösterimi kullanarak özel bir yol tanımlayabilir veya google.maps.SymbolPath'teki önceden tanımlanmış yollardan birini kullanabilirsiniz. Yakınlaştırma seviyesi değiştiğinde işaretçinin doğru şekilde oluşturulması için anchor
özelliği gereklidir. İşaretçi (ve çoklu çizgiler) için vektor tabanlı simgeler oluşturmak üzere simge kullanma hakkında daha fazla bilgi edinin.
TypeScript
// This example uses SVG path notation to add a vector-based symbol // as the icon for a marker. The resulting icon is a marker-shaped // symbol with a blue fill and no border. function initMap(): void { const center = new google.maps.LatLng(-33.712451, 150.311823); const map = new google.maps.Map( document.getElementById("map") as HTMLElement, { zoom: 9, center: center, } ); const svgMarker = { path: "M-1.547 12l6.563-6.609-1.406-1.406-5.156 5.203-2.063-2.109-1.406 1.406zM0 0q2.906 0 4.945 2.039t2.039 4.945q0 1.453-0.727 3.328t-1.758 3.516-2.039 3.070-1.711 2.273l-0.75 0.797q-0.281-0.328-0.75-0.867t-1.688-2.156-2.133-3.141-1.664-3.445-0.75-3.375q0-2.906 2.039-4.945t4.945-2.039z", fillColor: "blue", fillOpacity: 0.6, strokeWeight: 0, rotation: 0, scale: 2, anchor: new google.maps.Point(0, 20), }; new google.maps.Marker({ position: map.getCenter(), icon: svgMarker, map: map, }); } declare global { interface Window { initMap: () => void; } } window.initMap = initMap;
JavaScript
// This example uses SVG path notation to add a vector-based symbol // as the icon for a marker. The resulting icon is a marker-shaped // symbol with a blue fill and no border. function initMap() { const center = new google.maps.LatLng(-33.712451, 150.311823); const map = new google.maps.Map(document.getElementById("map"), { zoom: 9, center: center, }); const svgMarker = { path: "M-1.547 12l6.563-6.609-1.406-1.406-5.156 5.203-2.063-2.109-1.406 1.406zM0 0q2.906 0 4.945 2.039t2.039 4.945q0 1.453-0.727 3.328t-1.758 3.516-2.039 3.070-1.711 2.273l-0.75 0.797q-0.281-0.328-0.75-0.867t-1.688-2.156-2.133-3.141-1.664-3.445-0.75-3.375q0-2.906 2.039-4.945t4.945-2.039z", fillColor: "blue", fillOpacity: 0.6, strokeWeight: 0, rotation: 0, scale: 2, anchor: new google.maps.Point(0, 20), }; new google.maps.Marker({ position: map.getCenter(), icon: svgMarker, map: map, }); } window.initMap = initMap;
Örneği Deneyin
İşaretçi etiketleri
İşaretçi etiketi, bir işaretçinin içinde görünen harf veya sayıdır. Bu bölümdeki işaretçi resminde, üzerinde "B" harfi bulunan bir işaretçi etiketi gösterilir. İşaretçi etiketini bir dize veya dize ve diğer etiket özelliklerini içeren bir MarkerLabel
nesne olarak belirtebilirsiniz.
İşaretçi oluştururken MarkerOptions
nesnesinde bir label
mülkü belirtebilirsiniz. Alternatif olarak, mevcut bir işaretçiye etiket ayarlamak için Marker nesnesinde setLabel()
'yi çağırabilirsiniz.
Aşağıdaki örnekte, kullanıcı haritayı tıkladığında etiketli işaretçiler gösterilmektedir:
TypeScript
// In the following example, markers appear when the user clicks on the map. // Each marker is labeled with a single alphabetical character. const labels = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; let labelIndex = 0; function initMap(): void { const bangalore = { lat: 12.97, lng: 77.59 }; const map = new google.maps.Map( document.getElementById("map") as HTMLElement, { zoom: 12, center: bangalore, } ); // This event listener calls addMarker() when the map is clicked. google.maps.event.addListener(map, "click", (event) => { addMarker(event.latLng, map); }); // Add a marker at the center of the map. addMarker(bangalore, map); } // Adds a marker to the map. function addMarker(location: google.maps.LatLngLiteral, map: google.maps.Map) { // Add the marker at the clicked location, and add the next-available label // from the array of alphabetical characters. new google.maps.Marker({ position: location, label: labels[labelIndex++ % labels.length], map: map, }); } declare global { interface Window { initMap: () => void; } } window.initMap = initMap;
JavaScript
// In the following example, markers appear when the user clicks on the map. // Each marker is labeled with a single alphabetical character. const labels = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; let labelIndex = 0; function initMap() { const bangalore = { lat: 12.97, lng: 77.59 }; const map = new google.maps.Map(document.getElementById("map"), { zoom: 12, center: bangalore, }); // This event listener calls addMarker() when the map is clicked. google.maps.event.addListener(map, "click", (event) => { addMarker(event.latLng, map); }); // Add a marker at the center of the map. addMarker(bangalore, map); } // Adds a marker to the map. function addMarker(location, map) { // Add the marker at the clicked location, and add the next-available label // from the array of alphabetical characters. new google.maps.Marker({ position: location, label: labels[labelIndex++ % labels.length], map: map, }); } window.initMap = initMap;
Örneği Deneyin
Karmaşık simgeler
Tıklanabilir bölgeleri belirtmek için karmaşık şekiller belirleyebilir ve simgelerin diğer yer paylaşımlarına göre nasıl görünmesi gerektiğini ("yığın sırası") belirtebilirsiniz. Bu şekilde belirtilen simgelerin icon
özellikleri Icon
türüne ayarlanmalıdır.
Icon
nesneleri bir resmi tanımlar. Ayrıca simgenin size
, simgenin origin
(istediğiniz resim, örneğin bir sprite'taki daha büyük bir resmin parçasıysa) ve simgenin sıcak noktasının yerleştirilmesi gereken anchor
(orijine göre belirlenir) değerlerini de tanımlar.
Özel işaretçi içeren bir etiket kullanıyorsanız etiketi Icon
nesnesinde labelOrigin
mülküyle konumlandırabilirsiniz.
TypeScript
// The following example creates complex markers to indicate beaches near // Sydney, NSW, Australia. Note that the anchor is set to (0,32) to correspond // to the base of the flagpole. function initMap(): void { const map = new google.maps.Map( document.getElementById("map") as HTMLElement, { zoom: 10, center: { lat: -33.9, lng: 151.2 }, } ); setMarkers(map); } // Data for the markers consisting of a name, a LatLng and a zIndex for the // order in which these markers should display on top of each other. const beaches: [string, number, number, number][] = [ ["Bondi Beach", -33.890542, 151.274856, 4], ["Coogee Beach", -33.923036, 151.259052, 5], ["Cronulla Beach", -34.028249, 151.157507, 3], ["Manly Beach", -33.80010128657071, 151.28747820854187, 2], ["Maroubra Beach", -33.950198, 151.259302, 1], ]; function setMarkers(map: google.maps.Map) { // Adds markers to the map. // Marker sizes are expressed as a Size of X,Y where the origin of the image // (0,0) is located in the top left of the image. // Origins, anchor positions and coordinates of the marker increase in the X // direction to the right and in the Y direction down. const image = { url: "https://developers.google.com/maps/documentation/javascript/examples/full/images/beachflag.png", // This marker is 20 pixels wide by 32 pixels high. size: new google.maps.Size(20, 32), // The origin for this image is (0, 0). origin: new google.maps.Point(0, 0), // The anchor for this image is the base of the flagpole at (0, 32). anchor: new google.maps.Point(0, 32), }; // Shapes define the clickable region of the icon. The type defines an HTML // <area> element 'poly' which traces out a polygon as a series of X,Y points. // The final coordinate closes the poly by connecting to the first coordinate. const shape = { coords: [1, 1, 1, 20, 18, 20, 18, 1], type: "poly", }; for (let i = 0; i < beaches.length; i++) { const beach = beaches[i]; new google.maps.Marker({ position: { lat: beach[1], lng: beach[2] }, map, icon: image, shape: shape, title: beach[0], zIndex: beach[3], }); } } declare global { interface Window { initMap: () => void; } } window.initMap = initMap;
JavaScript
// The following example creates complex markers to indicate beaches near // Sydney, NSW, Australia. Note that the anchor is set to (0,32) to correspond // to the base of the flagpole. function initMap() { const map = new google.maps.Map(document.getElementById("map"), { zoom: 10, center: { lat: -33.9, lng: 151.2 }, }); setMarkers(map); } // Data for the markers consisting of a name, a LatLng and a zIndex for the // order in which these markers should display on top of each other. const beaches = [ ["Bondi Beach", -33.890542, 151.274856, 4], ["Coogee Beach", -33.923036, 151.259052, 5], ["Cronulla Beach", -34.028249, 151.157507, 3], ["Manly Beach", -33.80010128657071, 151.28747820854187, 2], ["Maroubra Beach", -33.950198, 151.259302, 1], ]; function setMarkers(map) { // Adds markers to the map. // Marker sizes are expressed as a Size of X,Y where the origin of the image // (0,0) is located in the top left of the image. // Origins, anchor positions and coordinates of the marker increase in the X // direction to the right and in the Y direction down. const image = { url: "https://developers.google.com/maps/documentation/javascript/examples/full/images/beachflag.png", // This marker is 20 pixels wide by 32 pixels high. size: new google.maps.Size(20, 32), // The origin for this image is (0, 0). origin: new google.maps.Point(0, 0), // The anchor for this image is the base of the flagpole at (0, 32). anchor: new google.maps.Point(0, 32), }; // Shapes define the clickable region of the icon. The type defines an HTML // <area> element 'poly' which traces out a polygon as a series of X,Y points. // The final coordinate closes the poly by connecting to the first coordinate. const shape = { coords: [1, 1, 1, 20, 18, 20, 18, 1], type: "poly", }; for (let i = 0; i < beaches.length; i++) { const beach = beaches[i]; new google.maps.Marker({ position: { lat: beach[1], lng: beach[2] }, map, icon: image, shape: shape, title: beach[0], zIndex: beach[3], }); } } window.initMap = initMap;
Örneği Deneyin
MarkerImage
nesnelerini Icon
türüne dönüştürme
Maps JavaScript API'nin 3.10 sürümüne kadar karmaşık simgeler MarkerImage
nesneleri olarak tanımlanıyordu. Icon
nesne değişmezi 3.10 sürümünde eklendi ve 3.11 sürümünden itibaren MarkerImage
'in yerini aldı.
Icon
nesne değişmezleri, MarkerImage
ile aynı parametreleri destekler. Böylece, bir MarkerImage
'u kolayca Icon
'e dönüştürebilirsiniz. Bunun için, oluşturucuyu kaldırmanız, önceki parametreleri {}
içine sarmanız ve her parametrenin adını eklemeniz gerekir. Örneğin:
var image = new google.maps.MarkerImage( place.icon, new google.maps.Size(71, 71), new google.maps.Point(0, 0), new google.maps.Point(17, 34), new google.maps.Size(25, 25));
şu olur:
var image = { url: place.icon, size: new google.maps.Size(71, 71), origin: new google.maps.Point(0, 0), anchor: new google.maps.Point(17, 34), scaledSize: new google.maps.Size(25, 25) };
İşaretçileri optimize etme
Optimizasyon, birçok işaretçiyi tek bir statik öğe olarak oluşturarak performansı artırır. Bu, çok sayıda işaretçi gerektiğinde kullanışlıdır. Bir işaretçinin optimize edilip edilmeyeceğine varsayılan olarak Maps JavaScript API karar verir. Çok sayıda işaretçi olduğunda Maps JavaScript API, işaretçileri optimize ederek oluşturmaya çalışır. Tüm işaretçiler optimize edilemez. Bazı durumlarda, Maps JavaScript API'nin işaretçileri optimize edilmeden oluşturması gerekebilir. Animasyonlu GIF'ler veya PNG'ler için optimize edilmiş oluşturmayı devre dışı bırakın ya da her işaretçi ayrı bir DOM öğesi olarak oluşturulmalıdır. Aşağıdaki örnekte, optimize edilmiş bir işaretçi oluşturma işlemi gösterilmektedir:
var marker = new google.maps.Marker({ position: myLatlng, title:"Hello World!", optimized: true });
İşaretçiyi erişilebilir hale getirme
Bir tıklama dinleyici etkinliği ekleyerek ve optimized
değerini false
olarak ayarlayarak işaretçiyi erişilebilir hale getirebilirsiniz. Tıklama dinleyicisi, işaretçinin düğme semantiklerine sahip olmasına neden olur. Bu semantiklere klavye gezinme, ekran okuyucular vb. kullanılarak erişilebilir. İşaretçi için erişilebilir metin göstermek isterseniz title
seçeneğini kullanın.
Aşağıdaki örnekte, sekme tuşuna basıldığında ilk işaretçiye odaklanılır. Ardından, işaretçiler arasında geçiş yapmak için ok tuşlarını kullanabilirsiniz. Harita kontrollerinin geri kalanında gezinmeye devam etmek için sekme tuşuna tekrar basın. Bir işaretin bilgi penceresi varsa işareti tıklayarak veya işaret seçiliyken Enter tuşuna ya da boşluk tuşuna basarak bu pencereyi açabilirsiniz. Bilgi penceresi kapandığında odak, ilişkili işaretçiye geri döner.
TypeScript
// The following example creates five accessible and // focusable markers. function initMap(): void { const map = new google.maps.Map( document.getElementById("map") as HTMLElement, { zoom: 12, center: { lat: 34.84555, lng: -111.8035 }, } ); // Set LatLng and title text for the markers. The first marker (Boynton Pass) // receives the initial focus when tab is pressed. Use arrow keys to // move between markers; press tab again to cycle through the map controls. const tourStops: [google.maps.LatLngLiteral, string][] = [ [{ lat: 34.8791806, lng: -111.8265049 }, "Boynton Pass"], [{ lat: 34.8559195, lng: -111.7988186 }, "Airport Mesa"], [{ lat: 34.832149, lng: -111.7695277 }, "Chapel of the Holy Cross"], [{ lat: 34.823736, lng: -111.8001857 }, "Red Rock Crossing"], [{ lat: 34.800326, lng: -111.7665047 }, "Bell Rock"], ]; // Create an info window to share between markers. const infoWindow = new google.maps.InfoWindow(); // Create the markers. tourStops.forEach(([position, title], i) => { const marker = new google.maps.Marker({ position, map, title: `${i + 1}. ${title}`, label: `${i + 1}`, optimized: false, }); // Add a click listener for each marker, and set up the info window. marker.addListener("click", () => { infoWindow.close(); infoWindow.setContent(marker.getTitle()); infoWindow.open(marker.getMap(), marker); }); }); } declare global { interface Window { initMap: () => void; } } window.initMap = initMap;
JavaScript
// The following example creates five accessible and // focusable markers. function initMap() { const map = new google.maps.Map(document.getElementById("map"), { zoom: 12, center: { lat: 34.84555, lng: -111.8035 }, }); // Set LatLng and title text for the markers. The first marker (Boynton Pass) // receives the initial focus when tab is pressed. Use arrow keys to // move between markers; press tab again to cycle through the map controls. const tourStops = [ [{ lat: 34.8791806, lng: -111.8265049 }, "Boynton Pass"], [{ lat: 34.8559195, lng: -111.7988186 }, "Airport Mesa"], [{ lat: 34.832149, lng: -111.7695277 }, "Chapel of the Holy Cross"], [{ lat: 34.823736, lng: -111.8001857 }, "Red Rock Crossing"], [{ lat: 34.800326, lng: -111.7665047 }, "Bell Rock"], ]; // Create an info window to share between markers. const infoWindow = new google.maps.InfoWindow(); // Create the markers. tourStops.forEach(([position, title], i) => { const marker = new google.maps.Marker({ position, map, title: `${i + 1}. ${title}`, label: `${i + 1}`, optimized: false, }); // Add a click listener for each marker, and set up the info window. marker.addListener("click", () => { infoWindow.close(); infoWindow.setContent(marker.getTitle()); infoWindow.open(marker.getMap(), marker); }); }); } window.initMap = initMap;
Örneği Deneyin
İşaretçiyi canlandırma
İşaretçileri, çeşitli durumlarda dinamik hareket gösterecek şekilde animasyonlu hale getirebilirsiniz. İşaretçinin animasyon şeklini belirtmek için işaretçinin google.maps.Animation
türündeki animation
özelliğini kullanın. Aşağıdaki
Animation
değerler desteklenir:
-
DROP
, işaretçinin haritada ilk kez yerleştirildiğinde haritanın üst kısmından nihai konumuna düştüğünü gösterir. İşaretçi sabitlendiğinde animasyon durur veanimation
,null
değerine döner. Bu tür animasyonlar genellikleMarker
oluşturulurken belirtilir. -
BOUNCE
, işaretçinin yerinde zıplamasını gösterir.animation
özelliği açıkçanull
olarak ayarlanana kadar sıçrayan işaretçi sıçramaya devam eder.
Marker
nesnesindeki setAnimation()
işlevini çağırarak mevcut bir işaretçide animasyon başlatabilirsiniz.
TypeScript
// The following example creates a marker in Stockholm, Sweden using a DROP // animation. Clicking on the marker will toggle the animation between a BOUNCE // animation and no animation. let marker: google.maps.Marker; function initMap(): void { const map = new google.maps.Map( document.getElementById("map") as HTMLElement, { zoom: 13, center: { lat: 59.325, lng: 18.07 }, } ); marker = new google.maps.Marker({ map, draggable: true, animation: google.maps.Animation.DROP, position: { lat: 59.327, lng: 18.067 }, }); marker.addListener("click", toggleBounce); } function toggleBounce() { if (marker.getAnimation() !== null) { marker.setAnimation(null); } else { marker.setAnimation(google.maps.Animation.BOUNCE); } } declare global { interface Window { initMap: () => void; } } window.initMap = initMap;
JavaScript
// The following example creates a marker in Stockholm, Sweden using a DROP // animation. Clicking on the marker will toggle the animation between a BOUNCE // animation and no animation. let marker; function initMap() { const map = new google.maps.Map(document.getElementById("map"), { zoom: 13, center: { lat: 59.325, lng: 18.07 }, }); marker = new google.maps.Marker({ map, draggable: true, animation: google.maps.Animation.DROP, position: { lat: 59.327, lng: 18.067 }, }); marker.addListener("click", toggleBounce); } function toggleBounce() { if (marker.getAnimation() !== null) { marker.setAnimation(null); } else { marker.setAnimation(google.maps.Animation.BOUNCE); } } window.initMap = initMap;
Örneği Deneyin
Çok sayıda işaretçiniz varsa bunları haritaya tek seferde bırakmak istemeyebilirsiniz. İşaretçilerinizin animasyonlarını aşağıdaki gibi bir kalıpla aralıklarla yerleştirmek için setTimeout()
kullanabilirsiniz:
function drop() { for (var i =0; i < markerArray.length; i++) { setTimeout(function() { addMarkerMethod(); }, i * 200); } }
İşaretçiyi sürüklenebilir hale getirme
Kullanıcıların işaretçiyi haritada farklı bir konuma sürüklemesine izin vermek için işaretçi seçeneklerinde draggable
değerini true
olarak ayarlayın.
var myLatlng = new google.maps.LatLng(-25.363882,131.044922); var mapOptions = { zoom: 4, center: myLatlng } var map = new google.maps.Map(document.getElementById("map"), mapOptions); // Place a draggable marker on the map var marker = new google.maps.Marker({ position: myLatlng, map: map, draggable:true, title:"Drag me!" });
İşaretçiyi daha da özelleştirme
Tamamen özelleştirilmiş bir işaretçi için özelleştirilmiş pop-up örneğine bakın.
İşaretçi sınıfının diğer uzantıları, işaretçi kümelenmesi ve yönetimi ve yer paylaşımı özelleştirmesi için açık kaynak kitaplıklarına bakın.