התאמת המצלמה

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

  • מעקב אחרי המיקום שלי (GoogleMap.followMyLocation) – מצב המצלמה שמוגדר כברירת מחדל לניווט. במצב הזה, המצלמה מוגדרת למכשיר או לרכב. במהלך הניווט, המצלמה פונה באופן אוטומטי לכיוון הנסיעה. כשההגדרה 'פרטים גבוהים' מופעלת (NavigationMapStyle.HIGH_DETAIL), קווי המתאר של בניינים ב-2D מוצגים כשרמת הזום היא 19 ומעלה.

  • מוצמדת למיקום (GoogleMap.animateCamera ו-GoogleMap.moveCamera) — המצלמה מוצמדת למיקום ספציפי. כשמשתמשים במצב הזה, אפשר להגדיר את מיקום המצלמה יחד עם מאפייני מצלמה אחרים כמו כיוון, הטיה, זום וכו'. כשהתצוגה הזו מסומנת וה-Navigator הופעל, הלחצן Re-center (מרכוז מחדש) גלוי.

  • הצגת סקירה כללית של המסלול (NavigationView.showRouteOverview או SupportNavigationFragment.showRouteOverview) – הצגת סקירה כללית של המסלול שנותר, עם אפשרות להזיז את המפה ולשנות את מרחק התצוגה לפי הצורך כדי להתאים את המסלול לתצוגת המפה. כשבוחרים בתצוגה הזו, הלחצן Re-center (מיקוד מחדש) גלוי.

לחיצה על הלחצן מרכוז מחדש מגדירה את המצלמה למצב followMyLocation.

מצב 'מעקב אחר המיקום שלי'

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

קטע הקוד הבא משתמש בפרספקטיבה TILTED:

// Set the camera to follow the device (vehicle):
mNavFragment.getMapAsync(googleMap -> googleMap.followMyLocation(CameraPerspective.TILTED))

הצמדה למצב מיקום

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

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

private static final LatLng SYDNEY = new LatLng(-33.88, 151.21);
private static final LatLng MOUNTAIN_VIEW = new LatLng(37.4, -122.1);

private GoogleMap map;
... // Obtain the map from a SupportNavigationFragment or NavigationView.

// Move the camera instantly to Sydney with a zoom of 15.
map.moveCamera(CameraUpdateFactory.newLatLngZoom(SYDNEY, 15));

// Zoom in, animating the camera.
map.animateCamera(CameraUpdateFactory.zoomIn());

// Zoom out to zoom level 10, animating with a duration of 2 seconds.
map.animateCamera(CameraUpdateFactory.zoomTo(10), 2000, null);

// Construct a CameraPosition focusing on Mountain View and animate the camera to that position.
CameraPosition cameraPosition = new CameraPosition.Builder()
    .target(MOUNTAIN_VIEW)      // Sets the center of the map to Mountain View
    .zoom(17)                   // Sets the zoom
    .bearing(90)                // Sets the orientation of the camera to east
    .tilt(30)                   // Sets the tilt of the camera to 30 degrees
    .build();                   // Creates a CameraPosition from the builder
map.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));

הצגת מצב סקירה כללית של המסלול

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

// Place the camera to see the remaining route:
mNavFragment.showRouteOverview();

הגדרת רמת פירוט גבוהה

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

בדוגמה הזו מופעל ההגדרה של רמת פירוט גבוהה:

  navigationView.setNavigationMapStyle(NavigationMapStyle.HIGH_DETAIL);

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

  googleMap.followMyLocation(
              FollowMyLocationOptions.builder(CameraPerspective.TILTED)
                      .setZoomLevel(15.0f)
                      .build());

השלב הבא

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