כברירת מחדל, נקודות עניין (POI) מופיעות במפה הבסיסית יחד עם של הסמלים המתאימים. נקודות עניין כוללות פארקים, בתי ספר, בנייני ממשלה, עוד.
בנוסף, נקודות עניין עסקיות מופיעות במפה כברירת מחדל כאשר סוג המפה הוא
normal
. נקודות עניין של עסקים מייצגות עסקים כמו חנויות, מסעדות, מלונות,
ועוד. נקודות עניין של עסקים במפות פנים (תוכניות קומה) מופיעות רק
מפה של מצב Lite.
נקודת עניין תואמת למזהה מקום, כפי שמוגדר ב Places SDK ל-Android. לדוגמה, פארקים לשעות הפנאי הם נקודות עניין, אבל כמו מזרקות מים הן בדרך כלל לא נקודות עניין (אלא אם הן או משמעות היסטורית).
האזנה לאירועי קליק בנקודות עניין
אם רוצים להגיב למשתמש שמקיש על נקודת עניין, אפשר להשתמש
OnPoiClickListener
כמו שמוצג בקוד הבא
דוגמה:
Kotlin
internal class OnPoiClickDemoActivity : AppCompatActivity(), OnMapReadyCallback, OnPoiClickListener { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.poi_click_demo) val mapFragment = supportFragmentManager.findFragmentById(R.id.map) as SupportMapFragment mapFragment.getMapAsync(this) } override fun onMapReady(map: GoogleMap) { map.setOnPoiClickListener(this) } override fun onPoiClick(poi: PointOfInterest) { Toast.makeText(this, """Clicked: ${poi.name} Place ID:${poi.placeId} Latitude:${poi.latLng.latitude} Longitude:${poi.latLng.longitude}""", Toast.LENGTH_SHORT ).show() } }
Java
class OnPoiClickDemoActivity extends AppCompatActivity implements OnMapReadyCallback, GoogleMap.OnPoiClickListener { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.poi_click_demo); SupportMapFragment mapFragment; mapFragment = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map); mapFragment.getMapAsync(this); } @Override public void onMapReady(GoogleMap map) { map.setOnPoiClickListener(this); } @Override public void onPoiClick(PointOfInterest poi) { Toast.makeText(this, "Clicked: " + poi.name + "\nPlace ID:" + poi.placeId + "\nLatitude:" + poi.latLng.latitude + " Longitude:" + poi.latLng.longitude, Toast.LENGTH_SHORT).show(); } }
נקודות עניין מופיעות במפה כברירת מחדל, אבל אין ממשק משתמש בעקבות לחיצה שמוגדר כברירת מחדל. כלומר, ממשק ה-API לא מציג באופן אוטומטי חלון מידע או ממשק משתמש אחר כשהמשתמש מקייש על נקודת עניין.
כפי שרואים מהדוגמה שלמעלה, עליכם להגדיר
OnPoiClickListener
במפה לפי
שיחות
GoogleMap.setOnPoiClickListener(OnPoiClickListener)
כשמשתמש לוחץ (מקישים) על נקודת עניין, האפליקציה מקבלת
אירוע OnPoiClick(PointOfInterest)
שמציינת את נקודת העניין (POI) שהמשתמש לחץ עליה.
PointOfInterest
מכיל את הקואורדינטות של קו האורך/רוחב,
מזהה המקום והשם של נקודת העניין.
איך מפסיקים את הצגת נקודות העניין במפה
אפשר להסתיר נקודות עניין (POI) על ידי החלת סגנונות מותאמים אישית על כל נקודות העניין או לקטגוריות ספציפיות של נקודות עניין.
הצהרת הסגנון הבאה של JSON מסתירה את כל נקודות העניין של העסק במפה:
[
{
"featureType": "poi.business",
"stylers": [
{ "visibility": "off" }
]
}
]
דוגמה נוספת: קובץ ה-JSON הבא מפשט את התצוגה של כל הקטגוריות של נקודות עניין:
[
{
"featureType": "poi",
"stylers": [
{ "visibility": "simplified" }
]
}
]
קוד Java ופרטים נוספים זמינים במדריך הסתרת תכונות מפה באמצעות עיצוב.