צורות

בחירת פלטפורמה: Android iOS JavaScript

מפה עם קו פוליגוני אדום

API של מפות Google ל-Android מציע כמה דרכים פשוטות להוספת צורות למפות על מנת להתאים אותן אישית לאפליקציה שלכם.

  • Polyline הוא סדרה של מקטעי קו מחוברים שיכולים ליצור כל צורה שרוצים, וניתן להשתמש בה כדי לסמן נתיבים ומסלולים במפה.
  • Polygon הוא צורה סגורה שאפשר להשתמש בה כדי לסמן אזורים במפה.
  • Circle הוא היטל מדויק מבחינה גיאוגרפית של מעגל על פני השטח של כדור הארץ, משורטט על המפה.

אפשר להתאים אישית את המראה של כל הצורות האלה על ידי שינוי כמה מאפיינים.

דוגמאות קוד

המדריך להוספת פוליגונים וקווים פוליגוניים לייצוג אזורים ומסלולים כולל את כל הקוד לאפליקציה פשוטה ל-Android.

בנוסף, מאגר ApiDemos ב-GitHub כולל דוגמאות שממחישות את השימוש בצורות ובתכונות שלהן:

קווים פוליגוניים

המחלקה Polyline מגדירה קבוצה של מקטעי קו מחוברים במפה. אובייקט Polyline מורכב מקבוצה של LatLng מיקומים, ויוצר סדרה של מקטעי קו שמחברים בין המיקומים האלה ברצף מסודר.

בסרטון הזה מוסבר איך לעזור למשתמשים להגיע ליעד, באמצעות קווים פוליגוניים כדי לשרטט מסלול במפה.

כדי ליצור קו פוליגוני, קודם צריך ליצור אובייקט PolylineOptions ולהוסיף לו נקודות. נקודות מייצגות נקודה על פני השטח של כדור הארץ, ומבוטאות כאובייקט LatLng. מקטעי קו משורטטים בין נקודות בהתאם לסדר שבו מוסיפים אותם לאובייקט PolylineOptions.

כדי להוסיף נקודות לאובייקט PolylineOptions, צריך לקרוא ל-PolylineOptions.add(). שימו לב שהשיטה הזו משתמשת במספר משתנה של פרמטרים, כך שאפשר להוסיף מספר נקודות בכל פעם (אם הנקודות כבר נמצאות ברשימה, אפשר גם לקרוא לפונקציה PolylineOptions.addAll(Iterable<LatLng>)).

לאחר מכן אפשר להוסיף את הקו הפוליגוני למפה על ידי התקשרות אל GoogleMap.addPolyline(PolylineOptions). השיטה מחזירה אובייקט Polyline שבאמצעותו תוכלו לשנות את הקו הפוליגוני מאוחר יותר.

קטע הקוד הבא מדגים איך להוסיף מלבן למפה:

Kotlin



// Instantiates a new Polyline object and adds points to define a rectangle
val polylineOptions = PolylineOptions()
    .add(LatLng(37.35, -122.0))
    .add(LatLng(37.45, -122.0)) // North of the previous point, but at the same longitude
    .add(LatLng(37.45, -122.2)) // Same latitude, and 30km to the west
    .add(LatLng(37.35, -122.2)) // Same longitude, and 16km to the south
    .add(LatLng(37.35, -122.0)) // Closes the polyline.

// Get back the mutable Polyline
val polyline = map.addPolyline(polylineOptions)

      

Java


// Instantiates a new Polyline object and adds points to define a rectangle
PolylineOptions polylineOptions = new PolylineOptions()
    .add(new LatLng(37.35, -122.0))
    .add(new LatLng(37.45, -122.0))  // North of the previous point, but at the same longitude
    .add(new LatLng(37.45, -122.2))  // Same latitude, and 30km to the west
    .add(new LatLng(37.35, -122.2))  // Same longitude, and 16km to the south
    .add(new LatLng(37.35, -122.0)); // Closes the polyline.

// Get back the mutable Polyline
Polyline polyline = map.addPolyline(polylineOptions);

      

המלבן יופיע במפה באופן הבא:

מפה עם קו פוליגוני של מלבן

כדי לשנות את הצורה של הקו הפוליגוני אחרי שמוסיפים אותו, אפשר לקרוא ל-Polyline.setPoints() ולספק רשימה חדשה של נקודות לקו הפוליגוני.

ניתן להתאים אישית את המראה של הקו הפוליגוני לפני שמוסיפים אותו למפה וגם אחרי שמוסיפים אותו למפה. פרטים נוספים זמינים בקטע התאמה אישית של מופעים שבהמשך.

התאמה אישית של Polyline

יש מספר דרכים להתאים אישית את המראה של קווים פוליגוניים:

  • קווים פוליגוניים צבעוניים מגדירים פלחים פוליגוניים לצבעים שונים.
  • קווים פוליגוניים הדרגתיים צובעים קו פוליגוני באמצעות שיפוע של שני צבעים.
  • קווים פוליגוניים חתוכים מעצבים קו פוליגוני באמצעות מפות ביטים חוזרות.

כדי להשתמש בהתאמות האישיות ב-Polyline חובה להשתמש ב-18.1.0 ואילך ב-SDK של מפות Google ל-Android ובגרסה העדכנית ביותר של Maps SDK ל-Android לעיבוד.

יצירת קו פוליגוני צבעוני

מפה עם קו פוליגוני צבעוני

אפשר להשתמש בטווחים כדי לצבוע בנפרד קו פוליגוני על ידי יצירת StyleSpan אובייקטים והוספתם ל-PolylineOptions באמצעות השיטות addSpan() או addSpans(). כברירת מחדל, כל פריט במערך מגדיר את הצבע של קטע השורה המתאים. הדוגמה הבאה מציגה איך להגדיר צבעי פלחים כדי ליצור קו פוליגוני עם פלחים באדום ובירוק:

Kotlin



val line = map.addPolyline(
    PolylineOptions()
        .add(LatLng(47.6677146, -122.3470447), LatLng(47.6442757, -122.2814693))
        .addSpan(StyleSpan(Color.RED))
        .addSpan(StyleSpan(Color.GREEN))
)

      

Java


Polyline line = map.addPolyline(new PolylineOptions()
        .add(new LatLng(47.6677146,-122.3470447), new LatLng(47.6442757,-122.2814693))
        .addSpan(new StyleSpan(Color.RED))
        .addSpan(new StyleSpan(Color.GREEN)));

      

יצירת קו פוליגוני הדרגתי

מפה עם קו פוליגוני הדרגתי

אפשר להגדיר שיפוע על ידי ציון שתי מערכות משולבות של 32 סיביות בצבעי אלפא-אדום-ירוק-כחול (ARGB), כדי לציין את צבעי ההתחלה והסיום של הקו. כדי להגדיר את המאפיין הזה באובייקט האפשרויות של הצורה, קוראים ל-PolylineOptions.addSpan(). הדוגמה הבאה מציגה יצירת קו פוליגוני אדום לצהוב מגן החיות וודלנד פארק לקירקלנד, וושינגטון.

Kotlin



val line = map.addPolyline(
    PolylineOptions()
        .add(LatLng(47.6677146, -122.3470447), LatLng(47.6442757, -122.2814693))
        .addSpan(
            StyleSpan(
                StrokeStyle.gradientBuilder(
                    Color.RED,
                    Color.YELLOW
                ).build()
            )
        )
)

      

Java


Polyline line = map.addPolyline(new PolylineOptions()
        .add(new LatLng(47.6677146,-122.3470447), new LatLng(47.6442757,-122.2814693))
        .addSpan(new StyleSpan(StrokeStyle.gradientBuilder(Color.RED, Color.YELLOW).build())));

      

יצירת קו פוליגוני עם חותמת

מפה עם קו פוליגוני חתום

אפשר להגדיר את המראה של קו פוליגוני למרקם חוזר של מפת סיביות (bitmap). לשם כך, יוצרים StampStyle של TextureStyle ומגדירים את המאפיין הזה באובייקט האפשרויות של הצורה על ידי קריאה ל-PolylineOptions.addSpan() כפי שמוצג כאן:

Kotlin



val stampStyle =
    TextureStyle.newBuilder(BitmapDescriptorFactory.fromResource(R.drawable.walking_dot)).build()
val span = StyleSpan(StrokeStyle.colorBuilder(Color.RED).stamp(stampStyle).build())
map.addPolyline(
    PolylineOptions()
        .add(LatLng(47.6677146, -122.3470447), LatLng(47.6442757, -122.2814693))
        .addSpan(span)
)

      

Java


StampStyle stampStyle =
        TextureStyle.newBuilder(BitmapDescriptorFactory.fromResource(R.drawable.walking_dot)).build();
StyleSpan span = new StyleSpan(StrokeStyle.colorBuilder(Color.RED).stamp(stampStyle).build());
map.addPolyline(new PolylineOptions()
        .add(new LatLng(47.6677146,-122.3470447), new LatLng(47.6442757,-122.2814693))
        .addSpan(span));

      

אירועים ב-Polyline

כברירת מחדל, קווים פוליגוניים אינם ניתנים ללחיצה. אפשר להפעיל ולהשבית את הקליקביליות על ידי קריאה ל-Polyline.setClickable(boolean).

השתמשו ב-OnPolylineClickListener כדי להאזין לאירועים וללחוץ על קו פוליגוני קליקבילי. כדי להגדיר את ה-listener הזה במפה, התקשרו אל GoogleMap.setOnPolylineClickListener(OnPolylineClickListener). כשמשתמש ילחץ על קו פוליגוני, תקבלו קריאה חוזרת בסך onPolylineClick(Polyline).

פוליגונים

Polygon אובייקטים דומים לאובייקטים Polyline בכך שהם מורכבים מסדרה של קואורדינטות ברצף מסודר. עם זאת, במקום להיות פוליגונים פתוחים, הם תוכננו להגדיר אזורים בלולאה סגורה עם מילוי מבפנים.

אפשר להוסיף Polygon למפה באותו אופן שבו מוסיפים Polyline. קודם כל יוצרים אובייקט PolygonOptions ומוסיפים לו כמה נקודות. הנקודות האלה ייצרו קווי מתאר של הפוליגון. לאחר מכן מוסיפים את הפוליגון למפה על ידי קריאה לפונקציה GoogleMap.addPolygon(PolygonOptions), שיחזיר אובייקט Polygon.

קטע הקוד הבא מוסיף מלבן למפה.

Kotlin



// Instantiates a new Polygon object and adds points to define a rectangle
val rectOptions = PolygonOptions()
    .add(
        LatLng(37.35, -122.0),
        LatLng(37.45, -122.0),
        LatLng(37.45, -122.2),
        LatLng(37.35, -122.2),
        LatLng(37.35, -122.0)
    )

// Get back the mutable Polygon
val polygon = map.addPolygon(rectOptions)

      

Java


// Instantiates a new Polygon object and adds points to define a rectangle
PolygonOptions polygonOptions = new PolygonOptions()
    .add(new LatLng(37.35, -122.0),
        new LatLng(37.45, -122.0),
        new LatLng(37.45, -122.2),
        new LatLng(37.35, -122.2),
        new LatLng(37.35, -122.0));

// Get back the mutable Polygon
Polygon polygon = map.addPolygon(polygonOptions);

      

כדי לשנות את צורת הפוליגון אחרי שמוסיפים אותו, אפשר לקרוא לפונקציה Polygon.setPoints() ולהוסיף רשימה חדשה של נקודות לקווי המתאר של הפוליגון.

אפשר להתאים אישית את מראה הפוליגון גם לפני שמוסיפים אותו למפה וגם אחרי שמוסיפים אותו למפה. פרטים נוספים זמינים בקטע התאמה אישית של מופעים שבהמשך.

השלמה אוטומטית של פוליגון

הפוליגון בדוגמה שלמעלה מורכב מחמש קואורדינטות, אבל שימו לב שהקואורדינטות הראשונה והאחרונה הן אותו מיקום, שמגדיר את הלולאה. עם זאת, בפועל, מכיוון שפוליגונים מגדירים אזורים סגורים, אין צורך להגדיר את הקואורדינטה האחרונה הזו. אם הקואורדינטה האחרונה שונה מהקואורדינטה הראשונה, ה-API 'יסגור' את הפוליגון באופן אוטומטי על ידי צירוף של הקואורדינטה הראשונה בסוף רצף הקואורדינטות.

שני הפוליגונים שלמטה הם שווי ערך, והקריאה לפונקציה polygon.getPoints() לכל אחד מהם תחזיר את כל 4 הנקודות.

Kotlin



val polygon1 = map.addPolygon(
    PolygonOptions()
        .add(
            LatLng(0.0, 0.0),
            LatLng(0.0, 5.0),
            LatLng(3.0, 5.0),
            LatLng(0.0, 0.0)
        )
        .strokeColor(Color.RED)
        .fillColor(Color.BLUE)
)
val polygon2 = map.addPolygon(
    PolygonOptions()
        .add(
            LatLng(0.0, 0.0),
            LatLng(0.0, 5.0),
            LatLng(3.0, 5.0)
        )
        .strokeColor(Color.RED)
        .fillColor(Color.BLUE)
)

      

Java


Polygon polygon1 = map.addPolygon(new PolygonOptions()
    .add(new LatLng(0, 0),
        new LatLng(0, 5),
        new LatLng(3, 5),
        new LatLng(0, 0))
    .strokeColor(Color.RED)
    .fillColor(Color.BLUE));

Polygon polygon2 = map.addPolygon(new PolygonOptions()
    .add(new LatLng(0, 0),
        new LatLng(0, 5),
        new LatLng(3, 5))
    .strokeColor(Color.RED)
    .fillColor(Color.BLUE));

      

יצירת פוליגון חלול

אפשר לשלב כמה נתיבים באובייקט Polygon אחד כדי ליצור צורות מורכבות, כמו טבעות ממולאות או 'תחתיות' (אזורים פוליגוניים מופיעים בתוך הפוליגון בתור 'איים'). צורות מורכבות הן תמיד הרכב של נתיבים מרובים ופשוטים.

יש להגדיר שני נתיבים באותו אזור. האזור הגדול מבין שני האזורים מגדיר את שטח המילוי, והוא פוליגון פשוט ללא אפשרויות נוספות. לאחר מכן, עוברים לנתיב שני לשיטה addHole(). כשהנתיב השני, הקטן יותר, מוקף בנתיב הגדול יותר, נראה כאילו הוסר חלק מהפוליגון. אם החור חוצה את קו המתאר של הפוליגון, הפוליגון יוצג ללא מילוי.

קטע הקוד שלמטה ייצור מלבן יחיד, עם חור מלבני קטן יותר.

Kotlin



val hole = listOf(
    LatLng(1.0, 1.0),
    LatLng(1.0, 2.0),
    LatLng(2.0, 2.0),
    LatLng(2.0, 1.0),
    LatLng(1.0, 1.0)
)
val hollowPolygon = map.addPolygon(
    PolygonOptions()
        .add(
            LatLng(0.0, 0.0),
            LatLng(0.0, 5.0),
            LatLng(3.0, 5.0),
            LatLng(3.0, 0.0),
            LatLng(0.0, 0.0)
        )
        .addHole(hole)
        .fillColor(Color.BLUE)
)

      

Java


List<LatLng> hole = Arrays.asList(new LatLng(1, 1),
    new LatLng(1, 2),
    new LatLng(2, 2),
    new LatLng(2, 1),
    new LatLng(1, 1));
Polygon hollowPolygon = map.addPolygon(new PolygonOptions()
    .add(new LatLng(0, 0),
        new LatLng(0, 5),
        new LatLng(3, 5),
        new LatLng(3, 0),
        new LatLng(0, 0))
    .addHole(hole)
    .fillColor(Color.BLUE));

      

הפוליגון החלול מופיע במפה כפי שמוצג בהמשך:

מפה עם קו פוליגוני של מלבן חלול

אירועי פוליגון

כברירת מחדל, לא ניתן ללחוץ על פוליגונים. אפשר להפעיל ולהשבית את הקליקביליות על ידי קריאה ל-Polygon.setClickable(boolean).

משתמשים ב-OnPolygonClickListener כדי להאזין לאירועים בלחיצה על פוליגון קליקבילי. כדי להגדיר את ה-listener הזה במפה, התקשרו אל GoogleMap.setOnPolygonClickListener(OnPolygonClickListener). כשמשתמש ילחץ על פוליגון, תקבלו קריאה חוזרת בסך onPolygonClick(Polygon).

עיגולים

מפה עם עיגול

בנוסף למחלקה Polygon כללית, ה-API של מפות Google כולל גם סיווגים ספציפיים של אובייקטים של Circle, כדי לפשט את הבנייה של האובייקטים.

כדי לבנות מעגל, עליך לציין את שני המאפיינים הבאים:

  • center בתור LatLng.
  • radius במטרים.

מעגל מוגדר כקבוצת כל הנקודות על פני השטח של כדור הארץ, שנמצאות במרחק radius מטרים מה-center הנתון. בגלל האופן שבו היטל ה-Mercator שמשמש את ה-API של מפות Google מעבד כדור על משטח ישר, הוא יופיע כעיגול כמעט מושלם במפה כשהוא קרוב לקו המשווה, והוא יופיע באופן שאינו מעגלי (על המסך) ככל שהעיגול יתקדם מקו המשווה.

כדי לשנות את צורת העיגול אחרי שמוסיפים אותו, אפשר לקרוא לפונקציה Circle.setRadius() או Circle.setCenter() ולספק ערכים חדשים.

ניתן להתאים אישית את מראה המעגל גם לפני שמוסיפים אותו למפה וגם אחרי שמוסיפים אותו למפה. פרטים נוספים זמינים בקטע התאמה אישית של מופעים שבהמשך.

קטע הקוד הבא מוסיף מעגל למפה על ידי בניית אובייקט CircleOptions וקריאה ל-GoogleMap.addCircle(CircleOptions):

Kotlin



// Instantiates a new CircleOptions object and defines the center and radius
val circleOptions = CircleOptions()
    .center(LatLng(37.4, -122.1))
    .radius(1000.0) // In meters

// Get back the mutable Circle
val circle = map.addCircle(circleOptions)

      

Java


// Instantiates a new CircleOptions object and defines the center and radius
CircleOptions circleOptions = new CircleOptions()
    .center(new LatLng(37.4, -122.1))
    .radius(1000); // In meters

// Get back the mutable Circle
Circle circle = map.addCircle(circleOptions);

      

אירועים במעגל

כברירת מחדל, לא ניתן ללחוץ על מעגלים. אפשר להפעיל ולהשבית את התכונה 'קליקביליות' על ידי קריאה ל-GoogleMap.addCircle() באמצעות CircleOptions.clickable(boolean), או באמצעות Circle.setClickable(boolean).

השתמשו ב-OnCircleClickListener כדי להאזין לאירועים וללחוץ על עיגול שאפשר ללחוץ עליו. כדי להגדיר את ה-listener הזה במפה, התקשרו אל GoogleMap.setOnCircleClickListener(OnCircleClickListener).

כשמשתמש ילחץ על מעגל תקבל קריאה חוזרת בסך onCircleClick(Circle), כפי שמוצג בדוגמת הקוד הבאה:

Kotlin



val circle = map.addCircle(
    CircleOptions()
        .center(LatLng(37.4, -122.1))
        .radius(1000.0)
        .strokeWidth(10f)
        .strokeColor(Color.GREEN)
        .fillColor(Color.argb(128, 255, 0, 0))
        .clickable(true)
)
map.setOnCircleClickListener {
    // Flip the r, g and b components of the circle's stroke color.
    val strokeColor = it.strokeColor xor 0x00ffffff
    it.strokeColor = strokeColor
}

      

Java


Circle circle = map.addCircle(new CircleOptions()
    .center(new LatLng(37.4, -122.1))
    .radius(1000)
    .strokeWidth(10)
    .strokeColor(Color.GREEN)
    .fillColor(Color.argb(128, 255, 0, 0))
    .clickable(true));

map.setOnCircleClickListener(new GoogleMap.OnCircleClickListener() {
    @Override
    public void onCircleClick(Circle circle) {
        // Flip the r, g and b components of the circle's stroke color.
        int strokeColor = circle.getStrokeColor() ^ 0x00ffffff;
        circle.setStrokeColor(strokeColor);
    }
});

      

התאמה אישית של המראה

ניתן לשנות את המראה של צורה גם לפני שמוסיפים אותה למפה (על ידי ציון המאפיין הרצוי באובייקט האפשרויות) וגם אחרי שמוסיפים אותה למפה. כדי שתוכלו לגשת בקלות למצב הנוכחי של הצורה, הקבצים נחשפים גם לכל הנכסים.

קטע הקוד הבא מוסיף קו פוליגוני כחול ועבה עם קטעים גיאודזיים ממלבורן עד פרת'. בקטעים הבאים נסביר על המאפיינים האלה בפירוט רב יותר.

Kotlin



val polyline = map.addPolyline(
    PolylineOptions()
        .add(LatLng(-37.81319, 144.96298), LatLng(-31.95285, 115.85734))
        .width(25f)
        .color(Color.BLUE)
        .geodesic(true)
)

      

Java


Polyline polyline = map.addPolyline(new PolylineOptions()
    .add(new LatLng(-37.81319, 144.96298), new LatLng(-31.95285, 115.85734))
    .width(25)
    .color(Color.BLUE)
    .geodesic(true));

      

המפה נראית כך:

מפה עם קו פוליגוני ממלבורן לפרת&#39;

הערה: את רוב המאפיינים אפשר להחיל על כל אחת מהצורות שמתוארות, אבל ייתכן שחלק מהתכונות לא יהיו הגיוניות לגבי צורות מסוימות (למשל, ל-Polyline לא יכול להיות צבע מילוי כי אין לו פנים).

צבע משיכה

צבע הקו הוא מספר שלם של 32 ביט-אדום-ירוק-כחול (ARGB) שמציין את השקיפות והצבע של קו הצורה. מגדירים את המאפיין הזה באובייקט האפשרויות של הצורה על ידי קריאה ל-*Options.strokeColor() (או ל-PolylineOptions.color() במקרה של קו פוליגוני). אם לא צוין צבע, צבע הקו הוא שחור (Color.BLACK).

לאחר הוספת הצורה למפה, ניתן לגשת לצבע הקו על ידי קריאה ל-getStrokeColor() (או ל-getColor() עבור קו פוליגוני), וניתן לשנות אותו באמצעות קריאה ל-setStrokeColor() (setColor() for a polyline).

צבע המילוי

צבע מילוי חל רק על פוליגונים ומעגלים. היא לא חלה על קווים פוליגוניים כי אין להם פנימי מוגדר. במקרה של פוליגון, האזורים שבתוך החורים שלו אינם חלק הפנימי של הפוליגון ולא יופיעו בהם צבעים אם הוגדר צבע מילוי.

צבע המילוי הוא מספר שלם של 32 ביט-אדום-ירוק-כחול (ARGB) שמציין את האטימות והצבע של פנים הצורה. מגדירים את המאפיין הזה באובייקט האפשרויות של הצורה על ידי קריאה ל-*Options.fillColor(). אם לא צוין צבע קו ברירת המחדל, צבע הקו הוא שקוף (Color.TRANSPARENT).

לאחר הוספת הצורה למפה, ניתן לגשת לצבע המילוי על ידי קריאה ל-getFillColor() וניתן לשנות אותו באמצעות קריאה ל-setFillColor().

רוחב משיכה

רוחב של קו הקו, כצף בפיקסלים (px). הרוחב לא משתנה כשמגדילים את התצוגה במפה (כלומר, לצורה יהיה אותו רוחב קווים בכל רמות הזום). מגדירים את המאפיין הזה באובייקט האפשרות של הצורה על ידי קריאה ל-*Options.strokeWidth() (או ל-PolylineOptions.width() לקו פוליגוני). אם לא צוין קו עם ברירת המחדל, הוא 10 פיקסלים.

לאחר הוספת הצורה למפה, ניתן לגשת לרוחב הקווים באמצעות קריאה ל-getStrokeWidth() (או ל-getWidth() לקו פוליגוני), ואפשר לשנות אותו באמצעות קריאה ל-setStrokeWidth() (setWidth() for a polyline).

קו ביטול נעילה

דפוס הקו המוגדר כברירת מחדל הוא קו יציב לקווים פוליגוניים ולקווי מתאר של פוליגונים ומעגלים. אפשר לציין דפוס קווים מותאם אישית של אובייקטים PatternItem, שבו כל פריט הוא מקף, נקודה או רווח.

הדוגמה הבאה מגדירה את התבנית של קו פוליגוני לרצף חוזר של נקודה, ואחריו פער באורך של 20 פיקסלים, מקף באורך 30 פיקסלים ופער נוסף של 20 פיקסלים.

Kotlin



val pattern = listOf(
    Dot(), Gap(20F), Dash(30F), Gap(20F)
)
polyline.pattern = pattern

      

Java


List<PatternItem> pattern = Arrays.asList(
    new Dot(), new Gap(20), new Dash(30), new Gap(20));
polyline.setPattern(pattern);

      

הדפוס חוזר על עצמו לאורך הקו, החל מפריט הדפוס הראשון בקודקוד הראשון שצוין לצורה.

סוגי מפרקים

בקווים פוליגוניים ובקווי מתאר של פוליגונים, אפשר לציין שיפוע או עגול JointType כדי להחליף את סוג מפרק המיתר הקבוע שמוגדר כברירת מחדל.

הדוגמה הבאה מחילה סוג משותף עגול על קו פוליגוני:

Kotlin



polyline.jointType = JointType.ROUND

      

Java


polyline.setJointType(JointType.ROUND);

      

סוג המחבר משפיע על הכיפופים הפנימיים בקו. אם בקו יש תבנית קווית שכוללת מקפים, הסוג המשותף רלוונטי גם כשמקף חובק מפרק. סוגי המפרקים לא משפיעים על הנקודות כי הם תמיד מעגליים.

מגבלות קו

אפשר לציין סגנון Cap לכל קצה של קו פוליגוני. האפשרויות הן אך ורק (ברירת המחדל), ריבוע, עגול או מפת סיביות בהתאמה אישית. תוכלו להגדיר את הסגנון ב-PolylineOptions.startCap וב-PolylineOptions.endCap, או להשתמש בשיטות שמוגדרות ב-קבלת התמונה או בהגדרת האובייקטים.

קטע הקוד הבא מציין קצוות מעוגלים בתחילת קו פוליגוני.

Kotlin



polyline.startCap = RoundCap()

      

Java


polyline.setStartCap(new RoundCap());

      

קטע הקוד הבא מציין מפת סיביות מותאמת אישית למכסת הסיום:

Kotlin



polyline.endCap = CustomCap(BitmapDescriptorFactory.fromResource(R.drawable.arrow), 16F)

      

Java


polyline.setEndCap(
    new CustomCap(BitmapDescriptorFactory.fromResource(R.drawable.arrow), 16));

      

כשמשתמשים במפת סיביות בהתאמה אישית, צריך לציין רוחב של משיכת הפניה בפיקסלים. ה-API משנה את מפת הסיביות בהתאם. רוחב הקווים של ההפניה הוא רוחב הקווים שבו השתמשתם כשעיצבתם את התמונה במפת הסיביות למכסה, בממד המקורי של התמונה. רוחב הקו של ההפניה שמוגדר כברירת מחדל הוא 10 פיקסלים. רמז: כדי לקבוע את רוחב הקו של ההפניה, פותחים את התמונה במפת הסיביות בזום 100% בכלי לעריכת תמונות, ומשרטטים את הרוחב הרצוי של קו הקו ביחס לתמונה.

אם משתמשים ב-BitmapDescriptorFactory.fromResource() כדי ליצור את מפת הסיביות, חשוב להשתמש במשאב שלא תלוי בדחיסות (nodpi).

פלחים גיאודזיים

ההגדרה הגאודזית חלה רק על קווים פוליגוניים ופוליגונים. הוא לא חל על מעגלים כי הם לא מוגדרים כאוסף של פלחים.

ההגדרה הגאודזית קובעת את האופן שבו משורטטים קטעי הקו בין קודקודים רצופים של הפוליגון/הפוליגון. קטעים גיאודזיים הם פלחים שעוקבים אחר המסלול הקצר ביותר על פני השטח של כדור הארץ (כדור) ובדרך כלל מופיעים כקווים מעוגלים במפה עם היטל של מרקטור. קטעים לא גיאודזיים משורטטים כקווים ישרים במפה.

מגדירים את המאפיין הזה באובייקט האפשרות של הצורה על ידי קריאה ל-*Options.geodesic(), כאשר true מציין את המקטעים שיש לצייר כגיאודזי ו-false מציין שיש לצייר את הקטעים כקווים ישרים. אם לא צוין אחרת, ברירת המחדל היא מקטעים לא גיאודזיים (false).

לאחר הוספת הצורה למפה, ניתן לגשת להגדרה הגאודזית על ידי קריאה ל-isGeodesic() וניתן לשנות אותה באמצעות קריאה ל-setGeodesic().

מדד Z

z-index מציין את סדר המקבצים של הצורה הזו, ביחס לשכבות-על אחרות (צורות אחרות, שכבות-על של קרקע ושכבות-על של משבצות) במפה. שכבת-על עם אינדקס z גבוה משורטטת מעל שכבות-על עם אינדקסי z נמוכים יותר. שתי שכבות-על עם אותו אינדקס z משורטטות בסדר שרירותי.

שים לב שהסמנים תמיד משורטטים מעל לשכבות-על אחרות, ללא קשר ל-z-index של שכבות-העל האחרות.

יש להגדיר את המאפיין הזה באובייקט האפשרויות של הצורה על ידי קריאה ל-*Options.zIndex(). אם לא צוין ערך, ברירת המחדל של z-index היא 0. לאחר הוספת הצורה למפה, ניתן לגשת ל-z-index על ידי קריאה ל-getZIndex() ואפשר לשנות אותה באמצעות setZIndex().

ראות

החשיפה מציינת אם יש לצייר את הצורה במפה. true מציין שיש לצייר אותה ו-false מציין שלא צריך לצייר אותה. היא מאפשרת לכם באופן זמני לא להציג צורה במפה. כדי להסיר באופן סופי צורה מהמפה, יש לבצע קריאה אל remove() בצורה הזו.

כדי להגדיר את המאפיין הזה באובייקט האפשרויות של הצורה, קוראים ל-*Options.visible(). אם לא צוין אחרת, ברירת המחדל של סטטוס החשיפה היא true. לאחר הוספת הצורה למפה, אפשר להתקשר אל isVisible() כדי לראות את החשיפה ולשנות אותה באמצעות setVisible().

שיוך נתונים לצורה

ניתן לאחסן אובייקט נתונים שרירותי עם קו פוליגוני, פוליגון או עיגול באמצעות השיטה setTag() של הצורה, ולאחזר את האובייקט באמצעות getTag(). לדוגמה, קריאה ל-Polyline.setTag() כדי לאחסן אובייקט נתונים עם קו פוליגוני, וקריאה ל-Polyline.getTag() כדי לאחזר את אובייקט הנתונים.

הקוד הבא מגדיר תג שרירותי (A) לקו הפוליגוני שצוין:

Kotlin



val polyline = map.addPolyline(
    PolylineOptions()
        .clickable(true)
        .add(
            LatLng(-35.016, 143.321),
            LatLng(-34.747, 145.592),
            LatLng(-34.364, 147.891),
            LatLng(-33.501, 150.217),
            LatLng(-32.306, 149.248),
            LatLng(-32.491, 147.309)
        )
)
polyline.tag = "A"

      

Java


Polyline polyline = map.addPolyline((new PolylineOptions())
    .clickable(true)
    .add(new LatLng(-35.016, 143.321),
        new LatLng(-34.747, 145.592),
        new LatLng(-34.364, 147.891),
        new LatLng(-33.501, 150.217),
        new LatLng(-32.306, 149.248),
        new LatLng(-32.491, 147.309)));

polyline.setTag("A");

      

הנה כמה דוגמאות לתרחישים שבהם כדאי לאחסן ולאחזר נתונים עם צורות:

  • האפליקציה עשויה להתאים לסוגים שונים של צורות, וכדאי להתייחס אליהן באופן שונה כשהמשתמש לוחץ עליהן.
  • יכול להיות שאתם מממשקים עם מערכת שיש לה מזהי רשומות ייחודיים, שבה הצורות מייצגות רשומות ספציפיות במערכת הזו.
  • נתוני הצורה יכולים להצביע על עדיפות לקביעת אינדקס z לצורה.