商家和其他搜尋點

選取平台: Android iOS JavaScript

根據預設,搜尋點 (POI) 與對應的圖示會一併顯示在基本地圖上。搜尋點包括公園、學校、政府大樓等。

此外,如果地圖類型為 normal,預設會顯示「商家」搜尋點。商家搜尋點代表商家,例如商店、餐廳、飯店等。室內地圖 (平面圖) 上的商家搜尋點,只會在精簡模式地圖顯示。

每個搜尋點都會對應至 Places SDK for Android 中定義的一個地點 ID。舉例來說,休閒公園是搜尋點,但像噴水池這類的項目通常就不是搜尋點 (除非其本身具有國家或歷史意義)。

監聽搜尋點的點擊事件

如果您想要回應輕觸搜尋點的使用者,可以使用 OnPoiClickListener,如以下程式碼範例所示:

KotlinJava


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()
   
}
}

     

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();
   
}
}

     

根據預設,地圖上會顯示搜尋點,但系統不會提供預設的點選式 UI;也就是說,使用者輕觸搜尋點時,API 不會自動顯示資訊視窗或任何其他使用者介面。

如以上範例所示,您可以透過呼叫 GoogleMap.setOnPoiClickListener(OnPoiClickListener) 在地圖上設定 OnPoiClickListener。 當使用者按一下 (輕觸) 搜尋點時,您的應用程式會收到 OnPoiClick(PointOfInterest) 事件,指出該搜尋點。PointOfInterest 包含經緯度座標、地點 ID 和搜尋點名稱。

停止在地圖上顯示搜尋點

將自訂樣式套用至全部或特定類別的搜尋點,即可加以隱藏。

下列 JSON 樣式宣告會隱藏地圖上的所有商家搜尋點:

[
 
{
   
"featureType": "poi.business",
   
"stylers": [
     
{ "visibility": "off" }
   
]
 
}
]

再舉一個例子,下列 JSON 簡化了所有類別搜尋點的顯示方式:

[
 
{
   
"featureType": "poi",
   
"stylers": [
     
{ "visibility": "simplified" }
   
]
 
}
]

如需 Java 程式碼和其他詳細資料,請參閱「使用樣式設定隱藏地圖項目」指南。