İşaretçiler (eski)

Platform seçin: Android iOS JavaScript

Giriş

İşaretçi, haritadaki bir konumu tanımlar. Varsayılan olarak, işaretçi standart bir resim kullanır. İşaretçiler özel resimler gösterebilir. Bu durumda genellikle "simge" olarak adlandırılırlar. İşaretçiler ve simgeler, Marker türündeki nesnelerdir. İşaretçinin oluşturucusunda veya işaretçide setIcon() işlevini çağırarak özel bir simge ayarlayabilirsiniz. İşaretçi resmini özelleştirme hakkında daha fazla bilgi edinin.

Genel olarak işaretçiler bir yer paylaşımı türüdür. Diğer yer paylaşımı türleri hakkında bilgi için Harita üzerinde çizim yapma başlıklı makaleyi inceleyin.

İşaretçiler etkileşimli olacak şekilde tasarlanmıştır. Örneğin, varsayılan olarak 'click' etkinlikleri alırlar. Bu nedenle, özel bilgileri gösteren bir bilgi penceresi açmak için bir etkinlik dinleyici ekleyebilirsiniz. İşaretçinin draggable özelliğini true olarak ayarlayarak kullanıcıların haritadaki bir işaretçiyi taşımasına izin verebilirsiniz. Sürüklenebilir işaretçiler hakkında daha fazla bilgi için aşağıya bakın.

İşaretçi ekleyin

google.maps.Marker oluşturucusu, işaretçinin ilk özelliklerini belirten tek bir Marker options nesne değişmez değeri alır.

İşaretçi oluştururken aşağıdaki alanlar özellikle önemlidir ve genellikle ayarlanır:

  • position (zorunlu) işaretçinin ilk konumunu tanımlayan bir LatLng belirtir. LatLng almanın bir yolu, Coğrafi Kodlama hizmetini kullanmaktır.
  • map (isteğe bağlı) işaretçinin yerleştirileceği Map'ı belirtir. İşaretçiyi oluştururken haritayı belirtmezseniz işaretçi oluşturulur ancak haritaya eklenmez (veya haritada gösterilmez). İşaretçinin setMap() yöntemini çağırarak işaretçiyi daha sonra ekleyebilirsiniz.

Aşağıdaki örnekte, Avustralya'nın merkezindeki Uluru'da bulunan 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 görüntüleyin

Yukarıdaki örnekte işaretçi, işaretçi seçeneklerindeki map özelliği kullanılarak işaretçi oluşturulurken haritaya yerleştirilir. Alternatif olarak, aşağıdaki örnekte gösterildiği gibi işaretçinin setMap() yöntemini kullanarak işaretçiyi doğrudan haritaya ekleyebilirsiniz:

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örünür.

İşaretçinin oluşturucusuna herhangi bir Marker options iletmek istemiyorsanız oluşturucunun son bağımsız değişkenine boş bir nesne {} iletin.

Örneği görüntüleyin

İşaretçiyi kaldırma

Haritadan bir işaretçiyi kaldırmak için bağımsız değişken olarak null değerini ileten setMap() yöntemini çağırın.

marker.setMap(null);

Yukarıdaki yöntemin işaretçiyi silmediğini unutmayın. Bu işlem, haritadaki işaretçiyi kaldırır. İşaretçiyi silmek istiyorsanız işaretçiyi haritadan kaldırıp işaretçinin kendisini null olarak ayarlamanız gerekir.

Bir dizi işaretçiyi 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 dizideki her işaretçi için sırayla setMap() yöntemini çağırabilirsiniz. İşaretçileri haritadan kaldırıp dizinin length değerini 0 olarak ayarlayarak silebilirsiniz. Bu işlem, işaretçilere yapılan tüm referansları kaldırır.

Örneği görüntüleyin

İşaretçi resmini özelleştirme

Varsayılan Google Haritalar raptiye simgesi yerine gösterilecek bir resim dosyası veya vektör tabanlı simge belirterek işaretçilerin görsel görünümünü özelleştirebilirsiniz. İşaretçi etiketi içeren metin ekleyebilir, tıklanabilir bölgeleri tanımlamak için karmaşık simgeler kullanabilir ve işaretçilerin yığın sırasını ayarlayabilirsiniz.

Resim simgeli işaretçiler

En basit durumda, bir simge varsayılan Google Haritalar raptiye simgesi yerine kullanılacak bir resmi belirtebilir. Böyle 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 görüntüleyin

Vektör tabanlı simgeler içeren 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 mülküne istenen yolu içeren bir Symbol nesne değişmez değeri iletin. SVG yol gösterimini kullanarak özel bir yol tanımlayabilir veya google.maps.SymbolPath'teki önceden tanımlanmış yollardan birini kullanabilirsiniz. İşaretçinin yakınlaştırma seviyesi değiştiğinde doğru şekilde oluşturulması için anchor özelliği gereklidir. İşaretçiler (ve çoklu çizgiler) için vektör tabanlı simgeler oluşturmak üzere sembolleri 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 görüntüleyin

İşaretçi etiketleri

İşaretçi etiketi, işaretçinin içinde görünen bir harf veya sayıdır. Bu bölümdeki işaretçi resmi, üzerinde "B" harfi bulunan bir işaretçi etiketi gösterir. İşaretçi etiketini dize olarak veya dize ve diğer etiket özelliklerini içeren bir MarkerLabel nesnesi olarak belirtebilirsiniz.

İşaretçi oluştururken label özelliğini MarkerOptions nesnesinde belirtebilirsiniz. Alternatif olarak, mevcut bir işaretçiye etiket ayarlamak için setLabel() işlevini Marker nesnesinde ç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 görüntüleyin

Karmaşık simgeler

Tıklanabilir bölgeleri belirtmek için karmaşık şekiller belirtebilir ve simgelerin diğer yer paylaşımlarına göre nasıl görünmesi gerektiğini (simgelerin "yığın sırası") belirtebilirsiniz. Bu şekilde belirtilen simgeler, icon özelliklerini Icon türünde bir nesneye ayarlamalıdır.

Icon nesneleri bir resmi tanımlar. Ayrıca simgenin size değerini, simgenin origin değerini (örneğin, istediğiniz resim bir sprite'taki daha büyük bir resmin parçasıysa) ve simgenin etkin noktasının bulunması gereken anchor değerini (başlangıç noktasına göre) tanımlar.

Özel işaretli bir etiket kullanıyorsanız etiketi labelOrigin özelliğiyle Icon nesnesinde 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 görüntüleyin

MarkerImage nesne Icon türüne dönüştürülüyor

Maps JavaScript API'nin 3.10 sürümüne kadar karmaşık simgeler MarkerImage nesneleri olarak tanımlanıyordu. Icon nesne değişmez değeri 3.10 sürümünde eklenmiştir ve 3.11 sürümünden itibaren MarkerImage değerinin yerini alır. Icon nesne değişmez değerleri, MarkerImage ile aynı parametreleri destekler. Bu sayede, kurucuyu kaldırıp önceki parametreleri {} içine sarmalayarak ve her parametrenin adını ekleyerek MarkerImage değerini kolayca Icon değerine dönüştürebilirsiniz. Ö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çinin gerekli olduğu durumlarda kullanışlıdır. Varsayılan olarak, işaretçinin optimize edilip edilmeyeceğine Maps JavaScript API karar verir. Çok sayıda işaretçi olduğunda Maps JavaScript API, işaretçileri optimizasyonla oluşturmaya çalışır. Tüm işaretçiler optimize edilemez. Bazı durumlarda, Maps JavaScript API'nin işaretçileri optimizasyon olmadan oluşturması gerekebilir. Animasyonlu GIF'ler veya PNG'ler için ya da her işaretçinin ayrı bir DOM öğesi olarak oluşturulması gerektiğinde optimize edilmiş oluşturmayı devre dışı bırakın. 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 işleyici etkinliği ekleyip optimized değerini false olarak ayarlayarak işaretçiyi erişilebilir hale getirebilirsiniz. Tıklama işleyici, işaretçinin düğme semantiğine sahip olmasına neden olur. Bu semantiğe klavyeyle gezinme, ekran okuyucular vb. kullanılarak erişilebilir. Bir işaretçi için erişilebilir metin sunmak üzere title seçeneğini kullanın.

Aşağıdaki örnekte, Tab tuşuna basıldığında odak ilk işaretçiye taşınır. Ardından, işaretçiler arasında hareket etmek 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şaretçinin bilgi penceresi varsa işaretçiyi tıklayarak veya işaretçi seçiliyken Enter tuşuna ya da boşluk çubuğuna basarak açabilirsiniz. Bilgi penceresi kapandığında odak, ilişkili işaretçiye 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 görüntüleyin

İşaretçiyi animasyona dönüştürme

İşaretçileri, çeşitli durumlarda dinamik hareket gösterecek şekilde canlandırabilirsiniz. Bir işaretçinin nasıl animasyonlu hale getirileceğini belirtmek için işaretçinin animation özelliğini kullanın. Bu özellik, google.maps.Animation türündedir. Aşağıdaki Animation değerler desteklenir:

  • DROP, işaretçi ilk kez haritaya yerleştirildiğinde haritanın üst kısmından son konumuna düşmesi gerektiğini gösterir. İşaretçi durduğunda animasyon sona erer ve animation, null değerine geri döner. Bu tür animasyonlar genellikle Marker oluşturulurken belirtilir.
  • BOUNCE, işaretçinin yerinde zıplaması gerektiğini gösterir. Bir sekme işaretçisi, animation özelliği açıkça null olarak ayarlanana kadar sekmeye devam eder.

Marker nesnesinde 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 görüntüleyin

Çok sayıda işaretçiniz varsa bunları haritaya tek seferde yerleştirmek istemeyebilirsiniz. İşaretçilerinizin animasyonlarını aşağıdaki gibi bir kalıp kullanarak aralıklı hale getirmek için setTimeout() özelliğinden yararlanabilirsiniz:

function drop() {
  for (var i =0; i < markerArray.length; i++) {
    setTimeout(function() {
      addMarkerMethod();
    }, i * 200);
  }
}

Örneği görüntüleyin

İşaretçiyi sürüklenebilir hale getirme

Kullanıcıların bir 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çileri daha fazla özelleştirme

Marker sınıfının diğer uzantıları, işaretçi grupları ve yönetimi ile yer paylaşımı özelleştirmesi için açık kaynak kitaplıklarına bakın.