אתם יכולים להוסיף למפה צורות שונות. צורה היא אובייקט במפה שמקושר לקווי אורך ורוחב. האפשרויות הזמינות הן: קווים, מצולעים, עיגולים וריבועים. אפשר גם להגדיר את הצורות כך שהמשתמשים יוכלו לערוך אותן או לגרור אותן.
קווים פוליגונים
כדי לשרטט קו במפה, משתמשים בפוליגון. הכיתה
Polyline
מגדירה שכבת-על לינארית של קטעי קו מקושרים במפה. אובייקט Polyline
מורכב ממערך של מיקומי LatLng
, ויוצר סדרה של קטעי קו שמחברים את המיקומים האלה ברצף מסודר.
הוספת קו מרובה
ה-constructor של Polyline
מקבל קבוצה של PolylineOptions
שמציינת את LatLng
של הקו וקבוצה של סגנונות כדי לשנות את ההתנהגות החזותית של הקו.
אובייקטים מסוג Polyline
מוצגים במפה כסדרה של קטעים ישרים. אפשר לציין צבעים, עוביים ואופקטים של שקיפיות בהתאמה אישית לקו בתוך PolylineOptions
בזמן יצירת הקו, או לשנות את המאפיינים האלה אחרי היצירה.
בקו מרובע יש תמיכה בסגנונות הקווים הבאים:
strokeColor
מציין צבע HTML הקסדצימלי בפורמט"#FFFFFF"
. בכיתהPolyline
אין תמיכה בצבעים עם שם.strokeOpacity
מציין ערך מספרי בין0.0
ל-1.0
כדי לקבוע את האטימות של צבע הקו. ערך ברירת המחדל הוא1.0
.strokeWeight
מציין את רוחב הקו בפיקסלים.
המאפיין editable
של קו הפוליגון מציין אם המשתמשים יכולים לערוך את הצורה. מידע נוסף זמין בקטע צורות שניתנות לעריכה על ידי משתמשים בהמשך. באופן דומה, אפשר להגדיר את המאפיין draggable
כדי לאפשר למשתמשים לגרור את הקו.
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;
ניסיון של דוגמה
הסרת קו פוליגון
כדי להסיר קו פוליגון מהמפה, צריך לבצע קריאה ל-method setMap()
ולהעביר את הערך null
כארגומנטים. בדוגמה הבאה, flightPath
הוא אובייקט קו מרובע:
flightPath.setMap(null);
חשוב לזכור שהשיטה שלמעלה לא מוחקת את קו הפוליגון. הוא מסיר את קו הפוליגון מהמפה. אם במקום זאת רוצים למחוק את קו הפוליגון, צריך להסיר אותו מהמפה ואז להגדיר את קו הפוליגון עצמו ל-null
.
בדיקה של קו פוליגוני
קו מרובע מציין סדרה של קואורדינטות כמערך של אובייקטים מסוג LatLng
. הקואורדינטות האלה קובעות את נתיב הקו.
כדי לאחזר את הקואורדינטות, צריך להפעיל את getPath()
, שתחזיר מערך מסוג MVCArray
. אפשר לבצע פעולות על המערך ולבדוק אותו באמצעות הפעולות הבאות:
getAt()
מחזירה את הערך שלLatLng
בערך נתון של אינדקס שמתחיל ב-0.insertAt()
מוסיף את הערך שלLatLng
שעבר לו בערכים נתונים של אינדקס שמתחיל בספרה אפס. חשוב לזכור שכל הקואורדינטות הקיימות בערך האינדקס הזה מועברות קדימה.removeAt()
מסירLatLng
בערך נתון של אינדקס שמתחיל בספרה אפס.
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;
ניסיון של דוגמה
התאמה אישית של קו מרובה
אפשר להוסיף תמונות מבוססות-וקטור לקו מרובע בצורת סמלים. שילוב של סמלים עם הכיתה PolylineOptions
מאפשר לכם לשלוט במראה ובתחושה של קווים פוליגונליים במפה.
במאמר סמלים מוסבר איך להוסיף חצים, קווים מקווקווים, סמלים מותאמים אישית וסמלים מונפשים.
פוליגונים
פוליגון מייצג אזור שמוקף בנתיבים סגורים (או לולאות), שמוגדרים על ידי סדרה של קואורדינטות.
אובייקטים מסוג
Polygon
דומים לאובייקטים מסוג Polyline
, בכך שהם מורכבים מסדרה של קואורדינטות ברצף מסודר.
פוליגונים נוצרים באמצעות קו ומילוי. אפשר להגדיר צבעים, עוביים ואטימות מותאמים אישית לקצה של הפוליגון (הקו) וצבעים ואטימות מותאמים אישית לאזור המגודר (המילוי). יש לציין את הצבעים בפורמט HTML הקסדצימלי. אין תמיכה בשמות של צבעים.
אובייקטים מסוג Polygon
יכולים לתאר צורות מורכבות, כולל:
- מספר אזורים לא צמודים שמוגדרים על ידי פוליגון אחד.
- אזורים עם חורים.
- צמתים של אזור אחד או יותר.
כדי להגדיר צורה מורכבת, משתמשים במשולש עם כמה נתיבים.
הערה: שכבת הנתונים מספקת דרך פשוטה לציור פוליגונים. הוא מטפל בוויליות של הפוליגונים, כך שקל יותר לצייר פוליגונים עם חורים. בתיעוד של שכבת הנתונים
הוספת מצולע
מאחר ששטח פוליגונלי עשוי לכלול כמה נתיבים נפרדים, המאפיין paths
של האובייקט Polygon
מציין מערך של מערכי משנה, כל אחד מהם מסוג MVCArray
. כל מערך מגדיר רצף נפרד של קואורדינטות LatLng
מסודרות.
בפוליגונים פשוטים שמכילים רק נתיב אחד, אפשר ליצור Polygon
באמצעות מערך אחד של קואורדינטות LatLng
. ממשק ה-API של JavaScript במפות Google יהפוך את המערך הפשוט למערך של מערכי בתהליך היצירה, כשיישמר במאפיין paths
. ב-API יש method פשוט של getPath()
עבור פוליגונים שמכילים נתיב אחד.
המאפיין editable
של הפוליגון מציין אם המשתמשים יכולים לערוך את הצורה. מידע נוסף זמין בקטע צורות שניתנות לעריכה על ידי משתמשים בהמשך.
באופן דומה, אפשר להגדיר את המאפיין draggable
כדי לאפשר למשתמשים לגרור את הצורה.
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;
ניסיון של דוגמה
השלמה אוטומטית של פוליגונים
המשתנה Polygon
בדוגמה שלמעלה מורכב מארבעה קבוצות של קואורדינטות LatLng
, אבל חשוב לשים לב שהקבוצה הראשונה והאחרונה מגדירות את אותו מיקום, וכך משלימים את הלולאה. עם זאת, בפועל, מכיוון שמרובעים מגדירים אזורים סגורים, אין צורך לציין את קבוצת הקואורדינטות האחרונה. Maps JavaScript API ישלים את הפוליגון באופן אוטומטי על ידי ציור קו שמחבר את המיקום האחרון למיקום הראשון בכל נתיב נתון.
הדוגמה הבאה זהה לדוגמה הקודמת, מלבד השמטת LatLng
האחרון: הצגת דוגמה.
הסרת פוליגון
כדי להסיר פוליגון מהמפה, צריך לבצע קריאה ל-method setMap()
ולהעביר את הערך null
כארגומנטים. בדוגמה הבאה, bermudaTriangle
הוא אובייקט פוליגון:
bermudaTriangle.setMap(null);
חשוב לזכור שהשיטה שלמעלה לא מוחקת את הפוליגון. הפוליגון יוסר מהמפה. אם במקום זאת רוצים למחוק את הפוליגון, צריך להסיר אותו מהמפה ואז להגדיר את הפוליגון עצמו ל-null
.
בדיקת פוליגון
פוליגון מציין את סדרת הקואורדינטות שלו כמערך של מערכי, שבהם כל מערך הוא מסוג MVCArray
. כל מערך 'עלה' הוא מערך של קואורדינטות LatLng
שמציין נתיב יחיד. כדי לאחזר את הקואורדינטות האלה, צריך לקרוא ל-method getPaths()
של האובייקט Polygon
. מכיוון שהמערך הוא MVCArray
, תצטרכו לבצע בו פעולות ולבדוק אותו באמצעות הפעולות הבאות:
getAt()
מחזירה את הערך שלLatLng
בערך נתון של אינדקס שמתחיל ב-0.insertAt()
מוסיף את הערך שלLatLng
שעבר לו בערכים נתונים של אינדקס שמתחיל בספרה אפס. חשוב לזכור שכל הקואורדינטות הקיימות בערך האינדקס הזה מועברות קדימה.removeAt()
מסירLatLng
בערך נתון של אינדקס שמתחיל בספרה אפס.
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;
ניסיון של דוגמה
איך יוצרים חור בפוליגון
כדי ליצור אזור ריק בתוך פוליגון, צריך ליצור שתי נתיבים, אחד בתוך השני. כדי ליצור את החור, הקואורדינטות שמגדירות את הנתיב הפנימי צריכות להיות בסדר הפוך לזה של הקואורדינטות שמגדירות את הנתיב החיצוני. לדוגמה, אם הקואורדינטות של הנתיב החיצוני מסודרות בכיוון השעון, הנתיב הפנימי צריך להיות בכיוון ההפוך לשעון.
הערה: שכבת הנתונים מטפלת בסדר של הנתיבים הפנימיים והחיצוניים, כך שקל יותר לצייר פוליגונים עם חורים. בתיעוד של שכבת הנתונים
בדוגמה הבאה מצויר פוליגון עם שני נתיבים, כאשר הנתיב הפנימי מתפתל בכיוון ההפוך לנתיב החיצוני.
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;
ניסיון של דוגמה
מלבנים
בנוסף לכיתה הגנרית Polygon
, ממשק ה-API של JavaScript במפות Google כולל כיתה ספציפית לאובייקטים מסוג
Rectangle
, כדי לפשט את היצירה שלהם.
הוספת מלבן
Rectangle
דומה ל-Polygon
בכך שאפשר להגדיר צבעים, עוביים ואטימות בהתאמה אישית לקצה של המלבן (הקו) וצבעים ואטימות בהתאמה אישית לאזור בתוך המלבן (המילוי). יש לציין את הצבעים בסגנון HTML מספרי הקסדצימלי.
בניגוד ל-Polygon
, לא מגדירים paths
ל-Rectangle
. במקום זאת, למלבן יש מאפיין bounds
שמגדיר את הצורה שלו על ידי ציון
google.maps.LatLngBounds
למלבן.
המאפיין editable
של המלבן מציין אם המשתמשים יכולים לערוך את הצורה. מידע נוסף זמין בקטע צורות שניתנות לעריכה על ידי משתמשים שבהמשך. באופן דומה, אפשר להגדיר את הנכס draggable
כדי לאפשר למשתמשים לגרור את המלבן.
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;
ניסיון של דוגמה
הקוד הבא יוצר מלבן בכל פעם שהמשתמש משנה את מרחק התצוגה במפה. הגודל של המלבן נקבע לפי אזור התצוגה.
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;
ניסיון של דוגמה
הסרת מלבן
כדי להסיר מלבן מהמפה, צריך לבצע קריאה ל-method setMap()
ולהעביר את הערך null
כארגומנטים.
rectangle.setMap(null);
חשוב לזכור שהשיטה שלמעלה לא מוחקת את המלבן. הוא מסיר את המלבן מהמפה. אם רוצים למחוק את המלבן, צריך להסיר אותו מהמפה ואז להגדיר את המלבן עצמו ל-null
.
מעגלים
בנוסף לכיתה הגנרית Polygon
, ממשק ה-API של JavaScript במפות Google כולל כיתה ספציפית לאובייקטים מסוג
Circle
, כדי לפשט את היצירה שלהם.
הוספת מעגל
רכיב Circle
דומה לרכיב Polygon
בכך שאפשר להגדיר צבעים, עוביים ואטימות בהתאמה אישית לקצה של העיגול (הקו) וצבעים ואטימות בהתאמה אישית לאזור בתוך העיגול (המילוי). יש לציין את הצבעים בסגנון HTML מספרי הקסדצימלי.
בניגוד ל-Polygon
, לא מגדירים paths
ל-Circle
. במקום זאת, לעיגול יש שני מאפיינים נוספים שמגדירים את הצורה שלו:
center
מציין אתgoogle.maps.LatLng
של מרכז המעגל.radius
מציין את הרדיוס של המעגל, במטרים.
המאפיין editable
של העיגול מציין אם המשתמשים יכולים לערוך את הצורה. מידע נוסף זמין בקטע צורות שניתנות לעריכה על ידי משתמשים בהמשך.
באופן דומה, אפשר להגדיר את המאפיין draggable
כדי לאפשר למשתמשים לגרור את העיגול.
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;
ניסיון של דוגמה
הסרת מעגל
כדי להסיר עיגול מהמפה, צריך לבצע קריאה ל-method setMap()
ולהעביר את הערך null
כארגומנטים.
circle.setMap(null);
חשוב לזכור שהשיטה שלמעלה לא מוחקת את המעגל. המעגל יוסר מהמפה. אם רוצים למחוק את המעגל, צריך להסיר אותו מהמפה ואז להגדיר את המעגל עצמו ל-null
.
צורות שאפשר לערוך ולגרור
כשמגדירים צורה כעריכה, מופיעות בה נקודות אחיזה שבעזרתן אפשר לשנות את המיקום, הצורה והגודל של הצורה ישירות במפה. אפשר גם להגדיר שאפשר יהיה לגרור את הצורה, כדי שאנשים יוכלו להזיז אותה למיקום אחר במפה.
שינויים שבוצעו על ידי משתמשים באובייקט לא נשמרים בין סשנים. אם אתם רוצים לשמור את העריכות של המשתמש, עליכם לתעד ולאחסן את המידע בעצמכם.
הגדרת צורה כניתנת לעריכה
אפשר להגדיר כל צורה (קווים פוליגונליים, פוליגונים, עיגולים ומלבנים) כצורה שניתנת לעריכה על ידי משתמשים. לשם כך, צריך להגדיר את editable
כ-true
באפשרויות של הצורה.
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 });
איך הופכים צורה לניתנת לגרירה
כברירת מחדל, הצורה שציירתם במפה תהיה קבועה במיקום שלה. כדי לאפשר למשתמשים לגרור צורה למיקום אחר במפה, צריך להגדיר את הערך של draggable
ל-true
באפשרויות הצורה.
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 });
כשמפעילים גרירה על פוליגון או קו פוליגוני, כדאי גם להגדיר את הפוליגון או הקו הפוליגוני כגיאודטיים על ידי הגדרת המאפיין geodesic
לערך true
.
פוליגון גיאודטי ישמור על הצורה הגיאוגרפית האמיתית שלו כשהוא מועבר, ולכן הוא ייראה מעוות כשהוא מועבר צפונה או דרומה בתצוגה של מרטינור. פוליגונים לא גיאודיזיים תמיד יישמרו במראה הראשוני שלהם במסך.
בקו פוליגון גיאודטי, הקטעים של הקו הפוליגון מצוירים כדרך הקצרה ביותר בין שתי נקודות על פני כדור הארץ, בהנחה שכדור הארץ הוא ספירה, בניגוד לקווים ישרים בתצוגה של מרטינור.
מידע נוסף על מערכות קואורדינטות זמין במדריך בנושא קואורדינטות של מפה ושל משבצת.
במפה הבאה מוצגים שני משולשים באותו גודל ובאותו פרופורציות. המאפיין geodesic
של המשולש האדום מוגדר לערך true
. שימו לב איך הצורה משתנה ככל שהוא נע צפונה.
האזנה לאירועי עריכה
כשעורכים צורה, אירוע מופעל בסיום העריכה. האירועים האלה מפורטים בהמשך.
צורה | אירועים |
---|---|
מעגל |
radius_changed center_changed
|
פוליגון |
insert_at remove_at set_at
צריך להגדיר את המאזין בנתיב של הפוליגון. אם לפוליגון יש כמה נתיבים, צריך להגדיר מאזין לכל נתיב. |
מצולע פתוח |
insert_at remove_at set_at
צריך להגדיר את המאזין בנתיב של קו הפוליגון. |
מלבן | bounds_changed |
קטעי קוד שימושיים:
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.'); });
דוגמה לטיפול באירוע עריכה על מלבן: הצגת דוגמה.
האזנה לאירועי גרירה
כשגוררים צורה, מתרחשים אירועים בתחילת הפעולה של הגרירה ובסופה, וגם במהלך הגרירה. האירועים הבאים מופעלים עבור קווים פוליגונליים, פוליגונים, עיגולים ומלבנים.
אירוע | תיאור |
---|---|
dragstart |
האירוע מופעל כשהמשתמש מתחיל לגרור את הצורה. |
drag |
האירוע מופעל שוב ושוב בזמן שהמשתמש גורר את הצורה. |
dragend |
האירוע מופעל כשהמשתמש מפסיק לגרור את הצורה. |
מידע נוסף על טיפול באירועים זמין במסמכי התיעוד בנושא אירועים.