Haritanıza çeşitli şekiller ekleyebilirsiniz. Şekil, haritada bir enlem/boylam koordinatına bağlı bir nesnedir. Aşağıdaki şekiller kullanılabilir: çizgiler, poligonlar, daireler ve dikdörtgenler. Şekillerinizi kullanıcıların düzenleyebileceği veya sürükleyebileceği şekilde de yapılandırabilirsiniz.
Çoklu çizgiler
Haritanızda çizgi çizmek için çoklu çizgi kullanın.
Polyline sınıfı, haritada 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 sırada birbirine bağlayan bir dizi çizgi segmenti oluşturur.
Çoklu çizgi ekleme
Polyline kurucusu, çizginin LatLng koordinatlarını belirten bir PolylineOptions dizisi ve poli çizginin görsel davranışını ayarlamak için bir stil dizisi alır.
Polyline nesneleri haritada bir dizi düz segment olarak çizilir. Çizginizi oluştururken PolylineOptions içinde çizginin fırçası için özel renkler, kalınlıklar ve opaklıklar belirtebilir veya bu özellikleri oluşturma işleminden sonra değiştirebilirsiniz.
Çoklu çizgiler aşağıdaki çizgi stillerini destekler:
strokeColor,"#FFFFFF"biçiminde bir on altılık HTML rengi belirtir.Polylinesınıfı, adlandırılmış renkleri desteklemez.strokeOpacity, çizginin renginin opaklığını belirlemek için0.0ile1.0arasında bir sayısal değer belirtir. Varsayılan değer1.0'tir.strokeWeight, çizginin piksel cinsinden genişliğini belirtir.
Çoklu çizginin editable mülkü, kullanıcıların şekli düzenleyip düzenleyemeyeceğini belirtir. Aşağıda kullanıcı tarafından düzenlenebilir şekiller hakkında bilgi verilmektedir. Benzer şekilde, draggable mülkünü 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 Deneyin
Çoklu çizgileri kaldırma
Bir çok çizgiyi haritadan kaldırmak için null bağımsız değişkeni olarak göndererek setMap() yöntemini çağırın. Aşağıdaki örnekte, flightPath bir çok çizgi nesnesidir:
flightPath.setMap(null);
Yukarıdaki yöntemin çoklu çizgiyi silmediğini unutmayın. Poli çizgiyi haritadan kaldırır. Bunun yerine çoklu çizgiyi silmek istiyorsanız onu haritadan kaldırmanız ve ardından çoklu çizgiyi null olarak ayarlamanız gerekir.
Çoklu çizgileri inceleme
Poli çizgi, bir dizi koordinatı LatLng nesnesi dizisi olarak belirtir. Bu koordinatlar çizginin yolunu belirler.
Koordinatları almak için getPath() işlevini çağırın. Bu işlev, MVCArray türündeki bir dizi döndürür. Aşağıdaki işlemleri kullanarak diziyi değiştirebilir ve inceleyebilirsiniz:
getAt(), sıfır tabanlı bir dizin değerindeLatLngdeğerini döndürür.insertAt(), sıfır tabanlı bir dizin değerine geçirilenLatLngdeğerini ekler. Bu dizin değerinde bulunan mevcut koordinatların ileriye taşındığını unutmayın.removeAt(), belirli bir sıfır tabanlı dizin değerinde birLatLng'ı 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 Deneyin
Çoklu çizgiyi özelleştirme
Bir çok çizgiye vektör tabanlı resimleri simge biçiminde ekleyebilirsiniz. Simgelerin ve PolylineOptions sınıfının bir kombinasyonuyla, haritanızdaki çoklu çizgilerin görünümü ve tarzı üzerinde çok fazla kontrole sahip olursunuz.
Oklar, kesikli çizgiler, özel simgeler ve animasyonlu simgeler hakkında bilgi edinmek için Simgeler bölümüne bakın.
Poligonlar
Poligon, bir dizi koordinatla tanımlanan kapalı bir yol (veya döngü) ile çevrili bir alanı temsil eder.
Polygon nesneleri, sıralı bir sıradaki bir dizi koordinattan oluşmaları nedeniyle Polyline nesnelerine benzer.
Poligonlar, çizgi ve dolgu ile çizilir. Poligonun kenarı (dış çizgi) için özel renkler, kalınlıklar ve opaklıklar, kapalı alan (dolgu) için de özel renkler ve opaklıklar tanımlayabilirsiniz. Renkler on altılı HTML biçiminde belirtilmelidir. Renk adları desteklenmez.
Polygon nesneleri aşağıdakiler dahil olmak üzere karmaşık şekilleri tanımlayabilir:
- Tek bir poligonla tanımlanan, birbirine bitişik olmayan birden fazla alan.
- Delik bulunan alanlar
- Bir veya daha fazla alanın kesişimi.
Karmaşık bir şekli tanımlamak için birden fazla yolu olan bir poligon kullanırsınız.
Not: Veri katmanı, poligon çizmenin basit bir yolunu sunar. Poligon sarma işlemini sizin için gerçekleştirerek delik içeren poligonlar çizmeyi kolaylaştırır. Veri katmanı dokümanlarını inceleyin.
Poligon ekle
Poligonal bir alan birkaç ayrı yol içerebileceğinden, Polygon nesnesinin paths mülkü, her biri MVCArray türündeki bir dizi dizi belirtir. Her dizi, ayrı bir sıralı LatLng koordinat dizisi 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 paths mülkünde depolarken oluşturma işlemi sırasında dizi dizisine dönüştürür. API, tek bir yoldan oluşan poligonlar için basit bir getPath() yöntemi sağlar.
Poligonun editable mülkü, kullanıcıların şekli düzenleyip düzenleyemeyeceğini belirtir. Aşağıdaki kullanıcı tarafından düzenlenebilir şekiller bölümüne bakın.
Benzer şekilde, draggable mülkünü ayarlayarak kullanıcıların şekli sürüklemesine izin verebilirsiniz.
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 Deneyin
Poligon otomatik tamamlama
Yukarıdaki örnekteki Polygon, dört LatLng koordinat grubundan oluşur ancak ilk ve son grupların aynı konumu tanımladığına dikkat edin. Bu da döngüyü tamamlar. Ancak pratikte, çokgenler kapalı alanları tanımladığından son koordinat grubunu belirtmeniz gerekmez. Maps JavaScript API, son konumu belirli bir yol için ilk konuma bağlayan bir çizgi çizerek poligonu otomatik olarak tamamlar.
Aşağıdaki örnek, son LatLng öğesinin atlanması dışında önceki örneğe aynıdır:
Örneği görüntüleyin.
Poligon kaldırma
Bir poligonu haritadan kaldırmak için null bağımsız değişkeni olarak göndererek setMap() yöntemini çağırın. Aşağıdaki örnekte bermudaTriangle bir poligon nesnesidir:
bermudaTriangle.setMap(null);
Yukarıdaki yöntemin poligonu silmediğini unutmayın. Poligonu haritada kaldırır. Bunun yerine poligonu silmek istiyorsanız önce haritadan kaldırmanız, ardından poligonu null olarak ayarlamanız gerekir.
Çokgenleri inceleme
Poligon, koordinat dizisini her biri MVCArray türündeki bir dizi dizi olarak belirtir. Her "yaprak" dizisi, tek bir yolu belirten LatLng koordinat dizisidir. Bu koordinatları almak için Polygon nesnesinin getPaths() yöntemini çağırın. Dizi bir MVCArray olduğundan aşağıdaki işlemleri kullanarak diziyi değiştirmeniz ve incelemeniz gerekir:
getAt(), sıfır tabanlı bir dizin değerindeLatLngdeğerini döndürür.insertAt(), sıfır tabanlı bir dizin değerine geçirilenLatLngdeğerini ekler. Bu dizin değerinde bulunan mevcut koordinatların ileriye taşındığını unutmayın.removeAt(), belirli bir sıfır tabanlı dizin değerinde birLatLng'ı 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 Deneyin
Bir poligona delik açma
Bir poligon içinde boş alan oluşturmak için biri diğerinin içinde olacak şekilde iki yol oluşturmanız gerekir. Delik oluşturmak için iç yolu tanımlayan koordinatlar, dış yolu tanımlayan koordinatların ters sırasına sahip olmalıdır. Örneğin, dış yolun koordinatları saat yönündeyse iç yol saat yönünün tersine olmalıdır.
Not: Veri katmanı, iç ve dış yolların sırasını sizin için yöneterek delik içeren poligonları çizmeyi kolaylaştırır. Veri katmanı dokümanlarını inceleyin.
Aşağıdaki örnekte, iç yol dış yolun ters yönünde sarılmış iki yol içeren bir poligon ç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 Deneyin
Dikdörtgenler
Google Maps JavaScript API, genel bir Polygon sınıfına ek olarak,
Rectangle nesnelerinin oluşturulmasını basitleştirmek için bu nesnelere özel bir sınıf da içerir.
Dikdörtgen ekleme
Rectangle, dikdörtgenin kenarı (fırça) için özel renkler, kalınlıklar ve opaklıklar ve dikdörtgenin içindeki alan (dolgu) için özel renkler ve opaklıklar tanımlayabileceğiniz bir Polygon'ye benzer. Renkler on altılı sayısal HTML stilinde belirtilmelidir.
Polygon'ün aksine, Rectangle için paths tanımlamazsınız. Bunun yerine, dikdörtgenin şeklini belirten bir bounds
mülkü vardır. Bu mülk, dikdörtgen için bir
google.maps.LatLngBounds belirtir.
Dikdörtgenin editable mülkü, kullanıcıların şekli düzenleyip düzenleyemeyeceğini belirtir. Aşağıdaki kullanıcı tarafından düzenlenebilir şekillere bakın. Benzer şekilde, kullanıcıların dikdörtgeni sürüklemesine izin vermek için draggable mülkünü 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 Deneyin
Aşağıdaki kod, kullanıcı haritada 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 Deneyin
Dikdörtgeni kaldırma
Bir dikdörtgeni haritadan kaldırmak için null bağımsız değişkeni olarak göndererek setMap() yöntemini çağırın.
rectangle.setMap(null);
Yukarıdaki yöntemin dikdörtgeni silmediğini unutmayın. Dikdörtgen haritadan kaldırılır. Dikdörtgeni silmek istiyorsanız haritadan kaldırmanız ve ardından dikdörtgeni null olarak ayarlamanız gerekir.
Daireler
Google Maps JavaScript API, genel Polygon sınıfına ek olarak,
Circle nesnelerinin oluşturulmasını basitleştirmek için bu nesnelere özel bir sınıf da içerir.
Çevre ekleme
Circle, dairenin kenarı (fırça) için özel renkler, kalınlıklar ve opaklıklar, dairenin içindeki alan (dolgu) için de özel renkler ve opaklıklar tanımlayabileceğiniz Polygon'ye benzer. Renkler, on altılık sayısal HTML stilinde belirtilmelidir.
Polygon'ün aksine, Circle için paths tanımlamazsınız. Bunun yerine, dairenin şeklini tanımlayan iki ek özellik vardır:
center, dairenin merkeziningoogle.maps.LatLngdeğerini belirtir.radius, dairenin yarıçapını metre cinsinden belirtir.
Dairenin editable mülkü, kullanıcıların şekli düzenleyip düzenleyemeyeceğini belirtir. Aşağıdaki kullanıcı tarafından düzenlenebilir şekiller bölümüne bakın.
Benzer şekilde, draggable mülkünü 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 Deneyin
Çevreleri kaldırma
Haritadan bir daireyi kaldırmak için setMap() yöntemini çağırın ve bağımsız değişken olarak null değerini iletin.
circle.setMap(null);
Yukarıdaki yöntemin daireyi silmediğini unutmayın. Çember haritadan kaldırılır. Bunun yerine daireyi silmek istiyorsanız daireyi haritadan kaldırmanız ve ardından daireyi null olarak ayarlamanız gerekir.
Kullanıcı tarafından düzenlenebilir ve sürüklenebilen şekiller
Bir şeklin düzenlenebilir hale getirilmesi, şeklin üzerine kullanıcıların doğrudan haritadan yeniden konumlandırmak, yeniden şekillendirmek ve yeniden boyutlandırmak için kullanabileceği tutamaçların eklenmesini sağlar. Ayrıca, kullanıcıların haritadaki farklı bir yere taşıyabilmesi için şekilleri sürüklenebilir hale getirebilirsiniz.
Kullanıcı tarafından nesnede yapılan değişiklikler oturumlar arasında kalıcı değildir. Kullanıcının düzenlemelerini kaydetmek istiyorsanız bilgileri kendiniz yakalayıp kaydetmeniz gerekir.
Bir şekli düzenlenebilir hale getirme
Herhangi bir şekil (çoklu çizgiler, poligonlar, daireler ve dikdörtgenler), şeklin seçeneklerinde editable değerini true olarak ayarlayarak 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 });
Bir şekli sürüklenebilir hale getirme
Haritada çizilen şekiller varsayılan olarak sabitlenir. Kullanıcıların bir şekli haritada farklı bir konuma sürüklemesine izin vermek için şekil seçeneklerinde draggable'yi 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 poligonu veya çoklu çizgiyi geodezik hale getirmeyi de düşünebilirsiniz.
Geodeziksel bir poligon taşındığında gerçek coğrafi şeklini korur. Bu da Mercator projeksiyonunda kuzeye veya güneye taşınan poligonun bozuk görünmesine neden olur. Geodeziden olmayan poligonlar, ekranda her zaman ilk görünümlerini korur.
Geodez poli çizgisinde, poli çizginin segmentleri, Merkatör projeksiyonundaki düz çizgilerin aksine, dünyanın bir küre olduğu varsayılarak dünyanın yüzeyindeki iki nokta arasındaki en kısa yol olarak çizilir.
Koordinat sistemleri hakkında daha fazla bilgi için harita ve karo koordinatları kılavuzuna bakın.
Aşağıdaki haritada, yaklaşık olarak aynı boyut ve boyutlara sahip iki üçgen gösterilmektedir. Kırmızı üçgenin geodesic özelliği true olarak ayarlanmıştır. Kuzeye doğru hareket ettikçe şeklinin nasıl değiştiğine dikkat edin.
Düzenleme etkinliklerini dinleme
Bir şekil düzenlendiğinde, düzenleme tamamlandıktan sonra bir etkinlik tetiklenir. Bu etkinlikler aşağıda listelenmiştir.
| Şekil | Etkinlikler |
|---|---|
| Daire |
radius_changedcenter_changed
|
| Poligon |
insert_atremove_atset_at
Dinleyici, poligonun yolunda ayarlanmalıdır. Poligonun birden fazla yolu varsa her yolda bir dinleyici ayarlanmalıdır. |
| Çoklu çizgi |
insert_atremove_atset_at
Dinleyici, ç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ği işleme örneğini inceleyin: örneği görüntüleyin.
Sürükleme etkinliklerini dinleme
Bir şekil sürüklendiğinde, sürükleme işleminin başlangıcında ve sonunda, ayrıca sürükleme sırasında etkinlikler tetiklenir. Aşağıdaki etkinlikler çoklu çizgiler, poligonlar, daireler ve dikdörtgenler için tetiklenir.
| Etkinlik | Açıklama |
|---|---|
dragstart |
Kullanıcı şekli sürüklemeye başladığında tetiklenir. |
drag |
Kullanıcı şekli sürüklerken tekrar tekrar tetiklenir. |
dragend |
Kullanıcı şekli sürüklemeyi bıraktığında tetiklenir. |
Etkinlikleri işleme hakkında daha fazla bilgi için etkinliklerle ilgili dokümanlara bakın.