התאמת המצלמה

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

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

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

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

לחיצה על הלחצן מרכז מחדש מעבירה את המצלמה למצב 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();

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

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

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

  navigationView.setNavigationMapStyle(NavigationMapStyle.HIGH_DETAIL);

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

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

השלב הבא

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