Şekiller

Platform seçin: Android iOS JavaScript

Haritanıza çeşitli şekiller ekleyebilirsiniz. Şekil, harita üzerinde bulunan ve enlem/boylam koordinatına bağlı bir nesnedir. Şu şekiller kullanılabilir: çizgiler, poligonlar, daireler ve dikdörtgenler. Ayrıca, şekillerinizi kullanıcıların bunları düzenleyebilmesi veya sürükleyebilmesi için yapılandırabilirsiniz.

Çoklu çizgiler

Haritanızda bir çizgi çizmek için çoklu çizgi kullanın. Polyline sınıfı, haritadaki bağlı çizgi segmentlerinin doğrusal bir yer paylaşımını tanımlar. Polyline nesnesi, bir LatLng konum dizisinden oluşur ve bu konumları sıralı bir dizide bağlayan bir dizi satır segmenti oluşturur.

Çoklu çizgi ekle

Polyline oluşturucu, çizginin görsel davranışını ayarlamak için çizginin LatLng koordinatlarını ve bir stil grubunu belirten bir PolylineOptions kümesini alır.

Polyline nesne, harita üzerinde bir dizi düz segment olarak çizilir. Çizginizi oluştururken PolylineOptions içindeki çizginin fırçası için özel renkler, ağırlıklar ve opaklıklar belirtebilir veya bu özellikleri yapımdan sonra değiştirebilirsiniz. Çoklu çizgi aşağıdaki fırça stillerini destekler:

  • strokeColor, "#FFFFFF" biçiminde on altılı HTML rengini belirtir. Polyline sınıfı, adlandırılmış renkleri desteklemiyor.
  • strokeOpacity, çizginin renginin opaklığını belirlemek için 0.0 ile 1.0 arasında bir sayısal değer belirtir. Varsayılan değer: 1.0.
  • strokeWeight, çizginin genişliğini piksel cinsinden belirtir.

Çoklu çizginin editable özelliği, kullanıcıların şekli düzenleyip düzenleyemeyeceğini belirtir. Aşağıda kullanıcı tarafından düzenlenebilir şekillere bakın. Benzer şekilde, draggable özelliğini kullanıcıların çizgiyi sürüklemesine izin verecek şekilde ayarlayabilirsiniz.

TypeScript

// This example creates a 2-pixel-wide red polyline showing the path of
// the first trans-Pacific flight between Oakland, CA, and Brisbane,
// Australia which was made by Charles Kingsford Smith.

function initMap(): void {
  const map = new google.maps.Map(
    document.getElementById("map") as HTMLElement,
    {
      zoom: 3,
      center: { lat: 0, lng: -180 },
      mapTypeId: "terrain",
    }
  );

  const flightPlanCoordinates = [
    { lat: 37.772, lng: -122.214 },
    { lat: 21.291, lng: -157.821 },
    { lat: -18.142, lng: 178.431 },
    { lat: -27.467, lng: 153.027 },
  ];
  const flightPath = new google.maps.Polyline({
    path: flightPlanCoordinates,
    geodesic: true,
    strokeColor: "#FF0000",
    strokeOpacity: 1.0,
    strokeWeight: 2,
  });

  flightPath.setMap(map);
}

declare global {
  interface Window {
    initMap: () => void;
  }
}
window.initMap = initMap;

JavaScript

// This example creates a 2-pixel-wide red polyline showing the path of
// the first trans-Pacific flight between Oakland, CA, and Brisbane,
// Australia which was made by Charles Kingsford Smith.
function initMap() {
  const map = new google.maps.Map(document.getElementById("map"), {
    zoom: 3,
    center: { lat: 0, lng: -180 },
    mapTypeId: "terrain",
  });
  const flightPlanCoordinates = [
    { lat: 37.772, lng: -122.214 },
    { lat: 21.291, lng: -157.821 },
    { lat: -18.142, lng: 178.431 },
    { lat: -27.467, lng: 153.027 },
  ];
  const flightPath = new google.maps.Polyline({
    path: flightPlanCoordinates,
    geodesic: true,
    strokeColor: "#FF0000",
    strokeOpacity: 1.0,
    strokeWeight: 2,
  });

  flightPath.setMap(map);
}

window.initMap = initMap;
Örneği göster

Örneği Deneyin

Çoklu çizgiyi kaldırma

Bir çoklu çizgiyi haritadan kaldırmak için, setMap() bağımsız değişkenini null bağımsız değişkeni olarak çağırın. Aşağıdaki örnekte flightPath bir çoklu çizgi nesnesidir:

flightPath.setMap(null);

Yukarıdaki yöntemin çoklu çizgiyi silmediğini unutmayın. Çoklu çizgiyi haritadan kaldırır. Çoklu çizgiyi silmek istiyorsanız bunu haritadan kaldırmanız ve ardından çoklu çizgiyi null olarak ayarlamanız gerekir.

Çoklu çizgiyi inceleme

Çoklu çizgi, LatLng nesnesinden oluşan bir dizi olarak koordinatlar dizisini belirtir. Bu koordinatlar, çizginin yolunu belirler. Koordinatları almak için getPath() türünü çağırın. Bu işlem, MVCArray türünde bir dizi döndürür. Aşağıdaki işlemleri kullanarak diziyi manipüle edebilir ve inceleyebilirsiniz:

  • getAt(), belirli bir sıfır tabanlı dizin değerinde LatLng değerini döndürür.
  • insertAt(), iletilen LatLng değerini belirli bir sıfır tabanlı dizin değerine ekler. Bu dizin değerindeki mevcut koordinatların ileriye dönük olarak taşındığını unutmayın.
  • removeAt(), belirtilen sıfır tabanlı dizin değerindeki LatLng değerini kaldırır.

TypeScript

// This example creates an interactive map which constructs a polyline based on
// user clicks. Note that the polyline only appears once its path property
// contains two LatLng coordinates.

let poly: google.maps.Polyline;
let map: google.maps.Map;

function initMap(): void {
  map = new google.maps.Map(document.getElementById("map") as HTMLElement, {
    zoom: 7,
    center: { lat: 41.879, lng: -87.624 }, // Center the map on Chicago, USA.
  });

  poly = new google.maps.Polyline({
    strokeColor: "#000000",
    strokeOpacity: 1.0,
    strokeWeight: 3,
  });
  poly.setMap(map);

  // Add a listener for the click event
  map.addListener("click", addLatLng);
}

// Handles click events on a map, and adds a new point to the Polyline.
function addLatLng(event: google.maps.MapMouseEvent) {
  const path = poly.getPath();

  // Because path is an MVCArray, we can simply append a new coordinate
  // and it will automatically appear.
  path.push(event.latLng as google.maps.LatLng);

  // Add a new marker at the new plotted point on the polyline.
  new google.maps.Marker({
    position: event.latLng,
    title: "#" + path.getLength(),
    map: map,
  });
}

declare global {
  interface Window {
    initMap: () => void;
  }
}
window.initMap = initMap;

JavaScript

// This example creates an interactive map which constructs a polyline based on
// user clicks. Note that the polyline only appears once its path property
// contains two LatLng coordinates.
let poly;
let map;

function initMap() {
  map = new google.maps.Map(document.getElementById("map"), {
    zoom: 7,
    center: { lat: 41.879, lng: -87.624 }, // Center the map on Chicago, USA.
  });
  poly = new google.maps.Polyline({
    strokeColor: "#000000",
    strokeOpacity: 1.0,
    strokeWeight: 3,
  });
  poly.setMap(map);
  // Add a listener for the click event
  map.addListener("click", addLatLng);
}

// Handles click events on a map, and adds a new point to the Polyline.
function addLatLng(event) {
  const path = poly.getPath();

  // Because path is an MVCArray, we can simply append a new coordinate
  // and it will automatically appear.
  path.push(event.latLng);
  // Add a new marker at the new plotted point on the polyline.
  new google.maps.Marker({
    position: event.latLng,
    title: "#" + path.getLength(),
    map: map,
  });
}

window.initMap = initMap;
Örneği göster

Örneği Deneyin

Çoklu çizgiyi özelleştirme

Çoklu çizgiye simge biçiminde vektör tabanlı resimler ekleyebilirsiniz. Semboller ve PolylineOptions sınıfının bir kombinasyonuyla, haritanızdaki çoklu çizgilerin görünümü ve tarzı üzerinde büyük bir kontrole sahip olursunuz. Oklar, çizgili çizgiler, özel simgeler ve animasyonlu simgeler hakkında bilgi edinmek için semboller konusuna bakın.

Poligonlar

Poligon, bir dizi koordinatla tanımlanan ve kapalı yol (veya döngü) ile kaplanmış bir alanı temsil eder. Polygon nesneleri sıralı dizideki bir dizi koordinattan oluşmaları açısından Polyline nesnelerine benzer. Poligonlar fırça ve dolgu ile çizilir. Poligonun kenarı için özel renkleri, ağırlıkları ve opaklıkları, (kapalı) dolgu ve özel renkleri ve opaklıkları tanımlayabilirsiniz. Renkler, on altılı HTML biçiminde belirtilmelidir. Renk adları desteklenmez.

Polygon nesneleri, aşağıdakiler gibi karmaşık şekilleri açıklayabilir:

  • Tek bir poligon tarafından tanımlanan, bitişik olmayan birden çok alan.
  • Delikler bulunan alanlar.
  • Bir veya daha fazla alanın kesişimi.

Karmaşık bir şekil tanımlamak için birden çok yolu olan bir poligon kullanırsınız.

Not: Veri katmanı, çokgenler çizmenin basit bir yolunu sunar. Poligonları sizin yerinize düzenleyerek çokgenlerin deliklerle çizilmesini kolaylaştırır. Veri katmanıyla ilgili belgeleri inceleyin.

Poligon ekle

Poligon alan birkaç farklı yol içerebileceğinden, Polygon nesnesinin paths özelliği, her biri MVCArray türünde bir dizi dizisi belirtir. Her dizi, sıralanmış LatLng koordinatlarının ayrı bir dizisini tanımlar.

Yalnızca bir yoldan oluşan basit poligonlar için tek bir LatLng koordinatı dizisi kullanarak bir Polygon oluşturabilirsiniz. Maps JavaScript API, basit diziyi yapım sırasında paths mülkünde depolarken bir dizi dizisine dönüştürür. API, bir yoldan oluşan çokgenler için basit bir getPath() yöntemi sağlar.

Poligonun editable özelliği, kullanıcıların şekli düzenleyip düzenleyemeyeceğini belirtir. Aşağıda kullanıcı tarafından düzenlenebilir şekillere bakın. Benzer şekilde, draggable özelliğini kullanıcıların şekli sürüklemesine izin verecek şekilde ayarlayabilirsiniz.

TypeScript

// This example creates a simple polygon representing the Bermuda Triangle.

function initMap(): void {
  const map = new google.maps.Map(
    document.getElementById("map") as HTMLElement,
    {
      zoom: 5,
      center: { lat: 24.886, lng: -70.268 },
      mapTypeId: "terrain",
    }
  );

  // Define the LatLng coordinates for the polygon's path.
  const triangleCoords = [
    { lat: 25.774, lng: -80.19 },
    { lat: 18.466, lng: -66.118 },
    { lat: 32.321, lng: -64.757 },
    { lat: 25.774, lng: -80.19 },
  ];

  // Construct the polygon.
  const bermudaTriangle = new google.maps.Polygon({
    paths: triangleCoords,
    strokeColor: "#FF0000",
    strokeOpacity: 0.8,
    strokeWeight: 2,
    fillColor: "#FF0000",
    fillOpacity: 0.35,
  });

  bermudaTriangle.setMap(map);
}

declare global {
  interface Window {
    initMap: () => void;
  }
}
window.initMap = initMap;

JavaScript

// This example creates a simple polygon representing the Bermuda Triangle.
function initMap() {
  const map = new google.maps.Map(document.getElementById("map"), {
    zoom: 5,
    center: { lat: 24.886, lng: -70.268 },
    mapTypeId: "terrain",
  });
  // Define the LatLng coordinates for the polygon's path.
  const triangleCoords = [
    { lat: 25.774, lng: -80.19 },
    { lat: 18.466, lng: -66.118 },
    { lat: 32.321, lng: -64.757 },
    { lat: 25.774, lng: -80.19 },
  ];
  // Construct the polygon.
  const bermudaTriangle = new google.maps.Polygon({
    paths: triangleCoords,
    strokeColor: "#FF0000",
    strokeOpacity: 0.8,
    strokeWeight: 2,
    fillColor: "#FF0000",
    fillOpacity: 0.35,
  });

  bermudaTriangle.setMap(map);
}

window.initMap = initMap;
Örneği göster

Örneği Deneyin

Poligon otomatik tamamlama

Yukarıdaki örnekte yer alan Polygon, dört LatLng koordinat grubundan oluşur, ancak ilk ve son grupların aynı konumu tanımladığını ve bu da döngüyü tamamladığını unutmayın. Ancak pratikte, poligonlar kapalı alanları tanımladığından, son koordinat grubunu belirtmeniz gerekmez. Maps JavaScript API, herhangi bir yol için son konumu tekrar ilk konuma bağlayan bir darbe çizerek poligonu otomatik olarak tamamlar.

Son LatLng atlandığı sürece şu örnek öncekiyle aynıdır: örneği görüntüleyin.

Çokgen kaldırma

Bir poligonu haritadan kaldırmak için, bağımsız değişken olarak null yazan setMap() yöntemini çağırın. Aşağıdaki örnekte bermudaTriangle bir poligon nesnesidir:

bermudaTriangle.setMap(null);

Yukarıdaki yöntemin çokgenin silinmediğini unutmayın. Poligonu haritadan kaldırır. Çokgeni silmek isterseniz haritadan kaldırmanız ve daha sonra, poligonu null olarak ayarlamanız gerekir.

Poligon inceleyin

Poligon, dizi dizisini bir dizi dizisi olarak belirtir. Burada her dizi, MVCArray türündedir. Her "yaprak" dizisi, tek bir yolu belirten LatLng koordinatları dizisidir. Bu koordinatları almak için Polygon nesnesinin getPaths() yöntemini çağırın. Dizi MVCArray olduğundan aşağıdaki işlemleri kullanarak diziyi incelemeniz ve incelemeniz gerekir:

  • getAt(), belirli bir sıfır tabanlı dizin değerinde LatLng değerini döndürür.
  • insertAt(), iletilen LatLng değerini belirli bir sıfır tabanlı dizin değerine ekler. Bu dizin değerindeki mevcut koordinatların ileriye dönük olarak taşındığını unutmayın.
  • removeAt(), belirtilen sıfır tabanlı dizin değerindeki LatLng değerini kaldırır.

TypeScript

// This example creates a simple polygon representing the Bermuda Triangle.
// When the user clicks on the polygon an info window opens, showing
// information about the polygon's coordinates.

let map: google.maps.Map;

let infoWindow: google.maps.InfoWindow;

function initMap(): void {
  map = new google.maps.Map(document.getElementById("map") as HTMLElement, {
    zoom: 5,
    center: { lat: 24.886, lng: -70.268 },
    mapTypeId: "terrain",
  });

  // Define the LatLng coordinates for the polygon.
  const triangleCoords: google.maps.LatLngLiteral[] = [
    { lat: 25.774, lng: -80.19 },
    { lat: 18.466, lng: -66.118 },
    { lat: 32.321, lng: -64.757 },
  ];

  // Construct the polygon.
  const bermudaTriangle = new google.maps.Polygon({
    paths: triangleCoords,
    strokeColor: "#FF0000",
    strokeOpacity: 0.8,
    strokeWeight: 3,
    fillColor: "#FF0000",
    fillOpacity: 0.35,
  });

  bermudaTriangle.setMap(map);

  // Add a listener for the click event.
  bermudaTriangle.addListener("click", showArrays);

  infoWindow = new google.maps.InfoWindow();
}

function showArrays(event: any) {
  // Since this polygon has only one path, we can call getPath() to return the
  // MVCArray of LatLngs.
  // @ts-ignore
  const polygon = this as google.maps.Polygon;
  const vertices = polygon.getPath();

  let contentString =
    "<b>Bermuda Triangle polygon</b><br>" +
    "Clicked location: <br>" +
    event.latLng.lat() +
    "," +
    event.latLng.lng() +
    "<br>";

  // Iterate over the vertices.
  for (let i = 0; i < vertices.getLength(); i++) {
    const xy = vertices.getAt(i);

    contentString +=
      "<br>" + "Coordinate " + i + ":<br>" + xy.lat() + "," + xy.lng();
  }

  // Replace the info window's content and position.
  infoWindow.setContent(contentString);
  infoWindow.setPosition(event.latLng);

  infoWindow.open(map);
}

declare global {
  interface Window {
    initMap: () => void;
  }
}
window.initMap = initMap;

JavaScript

// This example creates a simple polygon representing the Bermuda Triangle.
// When the user clicks on the polygon an info window opens, showing
// information about the polygon's coordinates.
let map;
let infoWindow;

function initMap() {
  map = new google.maps.Map(document.getElementById("map"), {
    zoom: 5,
    center: { lat: 24.886, lng: -70.268 },
    mapTypeId: "terrain",
  });

  // Define the LatLng coordinates for the polygon.
  const triangleCoords = [
    { lat: 25.774, lng: -80.19 },
    { lat: 18.466, lng: -66.118 },
    { lat: 32.321, lng: -64.757 },
  ];
  // Construct the polygon.
  const bermudaTriangle = new google.maps.Polygon({
    paths: triangleCoords,
    strokeColor: "#FF0000",
    strokeOpacity: 0.8,
    strokeWeight: 3,
    fillColor: "#FF0000",
    fillOpacity: 0.35,
  });

  bermudaTriangle.setMap(map);
  // Add a listener for the click event.
  bermudaTriangle.addListener("click", showArrays);
  infoWindow = new google.maps.InfoWindow();
}

function showArrays(event) {
  // Since this polygon has only one path, we can call getPath() to return the
  // MVCArray of LatLngs.
  // @ts-ignore
  const polygon = this;
  const vertices = polygon.getPath();
  let contentString =
    "<b>Bermuda Triangle polygon</b><br>" +
    "Clicked location: <br>" +
    event.latLng.lat() +
    "," +
    event.latLng.lng() +
    "<br>";

  // Iterate over the vertices.
  for (let i = 0; i < vertices.getLength(); i++) {
    const xy = vertices.getAt(i);

    contentString +=
      "<br>" + "Coordinate " + i + ":<br>" + xy.lat() + "," + xy.lng();
  }

  // Replace the info window's content and position.
  infoWindow.setContent(contentString);
  infoWindow.setPosition(event.latLng);
  infoWindow.open(map);
}

window.initMap = initMap;
Örneği göster

Örneği Deneyin

Poligona delik açma

Çokgen içinde boş bir alan oluşturmak için biri içre olmak üzere iki yol oluşturmanız gerekir. Deliği oluşturmak için iç yolu tanımlayan koordinatlar, dış yolu tanımlayanların tersi bir sırayla olmalıdır. Örneğin, dış yolun koordinatları saat yönündeyse iç yolun saat yönünün tersine olması gerekir.

Not: Veri katmanı sizin için iç ve dış yolların sırasını yönetir ve delikli çokgenlerin çizilmesini kolaylaştırır. Veri katmanıyla ilgili belgeleri inceleyin.

Aşağıdaki örnekte iki yolu olan bir poligon, iç yolun dış yolun ters yönünde çizildiği bir çizgi çizilmektedir.

TypeScript

// This example creates a triangular polygon with a hole in it.

function initMap(): void {
  const map = new google.maps.Map(
    document.getElementById("map") as HTMLElement,
    {
      zoom: 5,
      center: { lat: 24.886, lng: -70.268 },
    }
  );

  // Define the LatLng coordinates for the polygon's  outer path.
  const outerCoords = [
    { lat: 25.774, lng: -80.19 },
    { lat: 18.466, lng: -66.118 },
    { lat: 32.321, lng: -64.757 },
  ];

  // Define the LatLng coordinates for the polygon's inner path.
  // Note that the points forming the inner path are wound in the
  // opposite direction to those in the outer path, to form the hole.
  const innerCoords = [
    { lat: 28.745, lng: -70.579 },
    { lat: 29.57, lng: -67.514 },
    { lat: 27.339, lng: -66.668 },
  ];

  // Construct the polygon, including both paths.
  const bermudaTriangle = new google.maps.Polygon({
    paths: [outerCoords, innerCoords],
    strokeColor: "#FFC107",
    strokeOpacity: 0.8,
    strokeWeight: 2,
    fillColor: "#FFC107",
    fillOpacity: 0.35,
  });

  bermudaTriangle.setMap(map);
}

declare global {
  interface Window {
    initMap: () => void;
  }
}
window.initMap = initMap;

JavaScript

// This example creates a triangular polygon with a hole in it.
function initMap() {
  const map = new google.maps.Map(document.getElementById("map"), {
    zoom: 5,
    center: { lat: 24.886, lng: -70.268 },
  });
  // Define the LatLng coordinates for the polygon's  outer path.
  const outerCoords = [
    { lat: 25.774, lng: -80.19 },
    { lat: 18.466, lng: -66.118 },
    { lat: 32.321, lng: -64.757 },
  ];
  // Define the LatLng coordinates for the polygon's inner path.
  // Note that the points forming the inner path are wound in the
  // opposite direction to those in the outer path, to form the hole.
  const innerCoords = [
    { lat: 28.745, lng: -70.579 },
    { lat: 29.57, lng: -67.514 },
    { lat: 27.339, lng: -66.668 },
  ];
  // Construct the polygon, including both paths.
  const bermudaTriangle = new google.maps.Polygon({
    paths: [outerCoords, innerCoords],
    strokeColor: "#FFC107",
    strokeOpacity: 0.8,
    strokeWeight: 2,
    fillColor: "#FFC107",
    fillOpacity: 0.35,
  });

  bermudaTriangle.setMap(map);
}

window.initMap = initMap;
Örneği göster

Örneği Deneyin

Dikdörtgenler

Google Haritalar JavaScript API'si, genel bir Polygon sınıfının yanı sıra yapılarını basitleştirmek üzere Rectangle nesneleri için belirli bir sınıf içerir.

Dikdörtgen ekleyin

Rectangle, dikdörtgenin kenarları (fırça) ve özel renkler ile opaklıklar (dolgu) için özel renkler, ağırlıklar ve opaklıklar tanımlayabilmenize benzer. Polygon özelliğine benzer. Renkler, onaltılık sayısal HTML stilinde belirtilmelidir.

Polygon işlevinin aksine, Rectangle için paths öğesini tanımlamazsınız. Bunun yerine bir dikdörtgenin, şeklini tanımlayan bir google.maps.LatLngBounds belirterek bounds özelliği bulunur.

Dikdörtgenin editable özelliği, kullanıcıların şekli düzenleyip düzenleyemeyeceğini belirtir. Aşağıda kullanıcı tarafından düzenlenebilir şekillere bakın. Benzer bir şekilde, draggable özelliğini kullanıcıların dikdörtgeni sürüklemesine izin verecek şekilde ayarlayabilirsiniz.

TypeScript

// This example adds a red rectangle to a map.

function initMap(): void {
  const map = new google.maps.Map(
    document.getElementById("map") as HTMLElement,
    {
      zoom: 11,
      center: { lat: 33.678, lng: -116.243 },
      mapTypeId: "terrain",
    }
  );

  const rectangle = new google.maps.Rectangle({
    strokeColor: "#FF0000",
    strokeOpacity: 0.8,
    strokeWeight: 2,
    fillColor: "#FF0000",
    fillOpacity: 0.35,
    map,
    bounds: {
      north: 33.685,
      south: 33.671,
      east: -116.234,
      west: -116.251,
    },
  });
}

declare global {
  interface Window {
    initMap: () => void;
  }
}
window.initMap = initMap;

JavaScript

// This example adds a red rectangle to a map.
function initMap() {
  const map = new google.maps.Map(document.getElementById("map"), {
    zoom: 11,
    center: { lat: 33.678, lng: -116.243 },
    mapTypeId: "terrain",
  });
  const rectangle = new google.maps.Rectangle({
    strokeColor: "#FF0000",
    strokeOpacity: 0.8,
    strokeWeight: 2,
    fillColor: "#FF0000",
    fillOpacity: 0.35,
    map,
    bounds: {
      north: 33.685,
      south: 33.671,
      east: -116.234,
      west: -116.251,
    },
  });
}

window.initMap = initMap;
Örneği göster

Örneği Deneyin

Aşağıdaki kod, kullanıcı haritadaki yakınlaştırmayı her değiştirdiğinde bir dikdörtgen oluşturur. Dikdörtgenin boyutu görüntü alanına göre belirlenir.

TypeScript

// This example creates a rectangle based on the viewport
// on any 'zoom-changed' event.

function initMap(): void {
  const map = new google.maps.Map(
    document.getElementById("map") as HTMLElement,
    {
      zoom: 11,
      center: { lat: 40.74852, lng: -73.981687 },
      mapTypeId: "terrain",
    }
  );

  const rectangle = new google.maps.Rectangle();

  map.addListener("zoom_changed", () => {
    // Get the current bounds, which reflect the bounds before the zoom.
    rectangle.setOptions({
      strokeColor: "#FF0000",
      strokeOpacity: 0.8,
      strokeWeight: 2,
      fillColor: "#FF0000",
      fillOpacity: 0.35,
      map,
      bounds: map.getBounds() as google.maps.LatLngBounds,
    });
  });
}

declare global {
  interface Window {
    initMap: () => void;
  }
}
window.initMap = initMap;

JavaScript

// This example creates a rectangle based on the viewport
// on any 'zoom-changed' event.
function initMap() {
  const map = new google.maps.Map(document.getElementById("map"), {
    zoom: 11,
    center: { lat: 40.74852, lng: -73.981687 },
    mapTypeId: "terrain",
  });
  const rectangle = new google.maps.Rectangle();

  map.addListener("zoom_changed", () => {
    // Get the current bounds, which reflect the bounds before the zoom.
    rectangle.setOptions({
      strokeColor: "#FF0000",
      strokeOpacity: 0.8,
      strokeWeight: 2,
      fillColor: "#FF0000",
      fillOpacity: 0.35,
      map,
      bounds: map.getBounds(),
    });
  });
}

window.initMap = initMap;
Örneği göster

Örneği Deneyin

Dikdörtgen kaldırma

Bir dikdörtgeni haritadan kaldırmak için, bağımsız değişken olarak null yazan setMap() yöntemini çağırın.

rectangle.setMap(null);

Yukarıdaki yöntemin dikdörtgeni silmediğini unutmayın. Dikdörtgeni haritadan kaldırır. Dikdörtgeni silmek isterseniz haritadan kaldırmanız ve ardından dikdörtgeni null olarak ayarlamanız gerekir.

Daireler

Google Haritalar JavaScript API'si, genel Polygon sınıfının yanı sıra yapılarını basitleştirmek üzere Circle nesneleri için özel bir sınıf içerir.

Daire ekleyin

Circle, dairenin kenarı için özel renkler, ağırlıklar ve opaklıklar (fırça) ve daire içindeki alan (dolgu) için özel renkler ve opaklıklar tanımlayabilmenizden dolayı Polygon özelliğine benzer. Renkler, onaltılık sayısal HTML stilinde belirtilmelidir.

Polygon işlevinin aksine, Circle için paths öğesini tanımlamazsınız. Bunun yerine, bir dairenin şeklini tanımlayan iki ek özellik vardır:

  • center, dairenin merkezinin google.maps.LatLng değerini belirtir.
  • radius, dairenin yarıçapını metre cinsinden belirtir.

Dairenin editable özelliği, kullanıcıların şekli düzenleyip düzenleyemeyeceğini belirtir. Aşağıda kullanıcı tarafından düzenlenebilir şekillere bakın. Benzer şekilde, draggable özelliğini kullanıcıların daireyi sürüklemesine izin verecek şekilde ayarlayabilirsiniz.

TypeScript

// This example creates circles on the map, representing populations in North
// America.

// First, create an object containing LatLng and population for each city.

interface City {
  center: google.maps.LatLngLiteral;
  population: number;
}

const citymap: Record<string, City> = {
  chicago: {
    center: { lat: 41.878, lng: -87.629 },
    population: 2714856,
  },
  newyork: {
    center: { lat: 40.714, lng: -74.005 },
    population: 8405837,
  },
  losangeles: {
    center: { lat: 34.052, lng: -118.243 },
    population: 3857799,
  },
  vancouver: {
    center: { lat: 49.25, lng: -123.1 },
    population: 603502,
  },
};

function initMap(): void {
  // Create the map.
  const map = new google.maps.Map(
    document.getElementById("map") as HTMLElement,
    {
      zoom: 4,
      center: { lat: 37.09, lng: -95.712 },
      mapTypeId: "terrain",
    }
  );

  // Construct the circle for each value in citymap.
  // Note: We scale the area of the circle based on the population.
  for (const city in citymap) {
    // Add the circle for this city to the map.
    const cityCircle = new google.maps.Circle({
      strokeColor: "#FF0000",
      strokeOpacity: 0.8,
      strokeWeight: 2,
      fillColor: "#FF0000",
      fillOpacity: 0.35,
      map,
      center: citymap[city].center,
      radius: Math.sqrt(citymap[city].population) * 100,
    });
  }
}

declare global {
  interface Window {
    initMap: () => void;
  }
}
window.initMap = initMap;

JavaScript

const citymap = {
  chicago: {
    center: { lat: 41.878, lng: -87.629 },
    population: 2714856,
  },
  newyork: {
    center: { lat: 40.714, lng: -74.005 },
    population: 8405837,
  },
  losangeles: {
    center: { lat: 34.052, lng: -118.243 },
    population: 3857799,
  },
  vancouver: {
    center: { lat: 49.25, lng: -123.1 },
    population: 603502,
  },
};

function initMap() {
  // Create the map.
  const map = new google.maps.Map(document.getElementById("map"), {
    zoom: 4,
    center: { lat: 37.09, lng: -95.712 },
    mapTypeId: "terrain",
  });

  // Construct the circle for each value in citymap.
  // Note: We scale the area of the circle based on the population.
  for (const city in citymap) {
    // Add the circle for this city to the map.
    const cityCircle = new google.maps.Circle({
      strokeColor: "#FF0000",
      strokeOpacity: 0.8,
      strokeWeight: 2,
      fillColor: "#FF0000",
      fillOpacity: 0.35,
      map,
      center: citymap[city].center,
      radius: Math.sqrt(citymap[city].population) * 100,
    });
  }
}

window.initMap = initMap;
Örneği göster

Örneği Deneyin

Bir çevreyi kaldırma

Bir çemberi haritada kaldırmak için, bağımsız değişken olarak null ileten setMap() yöntemini çağırın.

circle.setMap(null);

Yukarıdaki yöntemin daireyi silmediğini unutmayın. Daireyi haritadan kaldırır. Bunun yerine, daireyi silmek istiyorsanız haritadan kaldırmanız ve ardından daireyi null olarak ayarlamanız gerekir.

Kullanıcı tarafından düzenlenebilir ve sürüklenebilir şekiller

Bir şekli düzenlenebilir hale getirdiğinizde şekile tutma yerleri eklenir. Kullanıcılar bu şekli doğrudan harita üzerinde yeniden konumlandırabilir, yeniden şekillendirebilir ve yeniden boyutlandırabilir. Ayrıca, bir şekli sürüklenebilir hale getirerek kullanıcıların haritayı farklı bir yere taşımasını sağlayabilirsiniz.

Nesnede kullanıcı tarafından yapılan değişiklikler oturumlar arasında kalıcı olmaz. Kullanıcının düzenlemelerini kaydetmek istiyorsanız bilgileri kendiniz yakalamanız ve depolamanız gerekir.

Şekli düzenlenebilir hale getirme

Şeklin seçeneklerinde editable true şeklinde ayarlanarak herhangi bir şekil (çoklu çizgi, poligon, daire ve dikdörtgen) kullanıcı tarafından düzenlenebilir olarak ayarlanabilir.

var bounds = {
  north: 44.599,
  south: 44.490,
  east: -78.443,
  west: -78.649
};

// Define a rectangle and set its editable property to true.
var rectangle = new google.maps.Rectangle({
  bounds: bounds,
  editable: true
});

Örneği göster

Şekli sürüklenebilir yap

Varsayılan olarak, haritada çizilen bir şekil konumunda sabitlenir. Kullanıcıların bir şekli haritada farklı bir konuma sürüklemesine izin vermek için şekil seçeneklerinde draggable öğesini true olarak ayarlayın.

var redCoords = [
  {lat: 25.774, lng: -80.190},
  {lat: 18.466, lng: -66.118},
  {lat: 32.321, lng: -64.757}
];

// Construct a draggable red triangle with geodesic set to true.
new google.maps.Polygon({
  map: map,
  paths: redCoords,
  strokeColor: '#FF0000',
  strokeOpacity: 0.8,
  strokeWeight: 2,
  fillColor: '#FF0000',
  fillOpacity: 0.35,
  draggable: true,
  geodesic: true
});

Bir poligon veya çoklu çizgide sürüklemeyi etkinleştirirken geodesic özelliğini true olarak ayarlayarak poligon veya çoklu çizgiyi de coğrafi konum yapabilirsiniz.

Jeodezik bir poligon, taşındığında gerçek coğrafi şeklini koruyacak ve Mercator projeksiyonunda kuzey ya da güneye taşınırken poligon bozuk olarak görünecektir. Jeolojik olmayan çokgenler her zaman ekrandaki ilk görünümlerini korur.

Jeodezik bir çoklu çizgide, çoklu çizginin segmentleri, Dünya'nın yüzeyindeki iki nokta arasındaki en kısa yol olarak çizilir. Ancak Mercator projeksiyonunda düz çizgilerden ziyade Dünya bir küredir.

Koordinat sistemleri hakkında daha fazla bilgi için harita ve karo koordinatları kılavuzuna bakın.

Aşağıdaki haritada hemen hemen aynı boyut ve boyutlardaki iki üçgen gösterilmektedir. Kırmızı üçgenin geodesic özelliği true olarak ayarlanmış. Kuzeye doğru hareket ederken şeklinin nasıl değiştiğine dikkat edin.

Örneği göster

Etkinlikleri düzenleme

Şekil düzenlendiğinde düzenleme tamamlandığında etkinlik tetiklenir. Bu etkinlikler aşağıda listelenmiştir.

Şekil Etkinlikler
Daire radius_changed
center_changed
Çokgen insert_at
remove_at
set_at

İşleyici, çokgenin yolunda ayarlanmalıdır. Poligonda birden fazla yol varsa her yolda bir dinleyici ayarlanmalıdır.

Çoklu çizgi insert_at
remove_at
set_at

İşleyici, çoklu çizginin yolunda ayarlanmalıdır.

Dikdörtgen bounds_changed

Bazı yararlı kod snippet'leri:

google.maps.event.addListener(circle, 'radius_changed', function() {
  console.log(circle.getRadius());
});

google.maps.event.addListener(outerPath, 'set_at', function() {
  console.log('Vertex moved on outer path.');
});

google.maps.event.addListener(innerPath, 'insert_at', function() {
  console.log('Vertex removed from inner path.');
});

google.maps.event.addListener(rectangle, 'bounds_changed', function() {
  console.log('Bounds changed.');
});

Dikdörtgen üzerinde düzenleme etkinliğinin nasıl yapıldığını gösteren bir örneği inceleyin: örneği görüntüleyin.

Sürükleme etkinliklerini dinleme

Bir şekil sürüklendiğinde etkinlikler, sürüklemenin yanı sıra sürükleme işleminin başında ve sonunda tetiklenir. Çoklu çizgi, poligon, daire ve dikdörtgenler için aşağıdaki etkinlikler tetiklenir.

Etkinlik Açıklama
dragstart Kullanıcı şekli sürüklemeye başladığında tetiklenir.
drag Kullanıcı şekli sürüklerken sürekli tetiklenir.
dragend Kullanıcı şekli sürüklemeyi bıraktığında tetiklenir.

Etkinlikleri yönetme hakkında daha fazla bilgi için etkinliklerle ilgili belgelere göz atın.