นอกจากการเปลี่ยนรูปแบบของจุดสนใจบนแผนที่แล้ว คุณยังสามารถซ่อนสถานที่เหล่านั้นได้ด้วย อย่างสิ้นเชิง ตัวอย่างนี้แสดงวิธีซ่อนจุดที่น่าสนใจ (POI) ของธุรกิจ และไอคอนขนส่งสาธารณะบนแผนที่ของคุณ
การจัดรูปแบบใช้ได้เฉพาะในแผนที่ประเภท normal
เท่านั้น การจัดรูปแบบไม่มีผลต่อ
แผนที่ในอาคาร ดังนั้น การใช้การจัดรูปแบบเพื่อซ่อนองค์ประกอบไม่สามารถป้องกัน
แปลนอาคารภายในอาคารไม่ให้ปรากฏบนแผนที่
ส่งออบเจ็กต์รูปแบบ JSON ไปยังแผนที่ของคุณ
หากต้องการจัดรูปแบบแผนที่ โทร GoogleMap.setMapStyle()
เพื่อส่งผ่าน
ออบเจ็กต์ MapStyleOptions
ที่มีสไตล์ของคุณ
ที่อยู่ในรูปแบบ JSON คุณสามารถโหลด JSON จากทรัพยากรดิบหรือ
ดังที่ปรากฏในตัวอย่างต่อไปนี้
ทรัพยากรดิบ
ตัวอย่างโค้ดต่อไปนี้จะถือว่าโปรเจ็กต์ของคุณมีทรัพยากรดิบชื่อ
style_json
:
// Copyright 2020 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package com.example.styledmap; import android.content.res.Resources; import android.os.Bundle; import android.util.Log; import androidx.appcompat.app.AppCompatActivity; import com.google.android.gms.maps.CameraUpdateFactory; import com.google.android.gms.maps.GoogleMap; import com.google.android.gms.maps.OnMapReadyCallback; import com.google.android.gms.maps.SupportMapFragment; import com.google.android.gms.maps.model.LatLng; import com.google.android.gms.maps.model.MapStyleOptions; /** * A styled map using JSON styles from a raw resource. */ public class MapsActivityRaw extends AppCompatActivity implements OnMapReadyCallback { private static final String TAG = MapsActivityRaw.class.getSimpleName(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // Retrieve the content view that renders the map. setContentView(R.layout.activity_maps_raw); // Get the SupportMapFragment and register for the callback // when the map is ready for use. SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager() .findFragmentById(R.id.map); mapFragment.getMapAsync(this); } /** * Manipulates the map when it's available. * The API invokes this callback when the map is ready for use. */ @Override public void onMapReady(GoogleMap googleMap) { try { // Customise the styling of the base map using a JSON object defined // in a raw resource file. boolean success = googleMap.setMapStyle( MapStyleOptions.loadRawResourceStyle( this, R.raw.style_json)); if (!success) { Log.e(TAG, "Style parsing failed."); } } catch (Resources.NotFoundException e) { Log.e(TAG, "Can't find style. Error: ", e); } // Position the map's camera near Sydney, Australia. googleMap.moveCamera(CameraUpdateFactory.newLatLng(new LatLng(-34, 151))); } }
กำหนดทรัพยากรดิบใน /res/raw/style_json.json
ซึ่งมี
การประกาศรูปแบบ JSON ต่อไปนี้เพื่อซ่อนจุดที่น่าสนใจของธุรกิจ
(จุดที่น่าสนใจ):
การประกาศรูปแบบต่อไปนี้ซ่อนประเด็นทางธุรกิจของ ไอคอนความสนใจ (POI) และไอคอนการขนส่งสาธารณะ:
เลย์เอาต์ (activity_maps.xml
) จะมีลักษณะดังนี้
ทรัพยากรสตริง
ตัวอย่างโค้ดต่อไปนี้จะถือว่าโปรเจ็กต์ของคุณมีทรัพยากรสตริง
ชื่อ style_json
:
package com.example.styledmap; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.util.Log; import com.google.android.gms.maps.CameraUpdateFactory; import com.google.android.gms.maps.GoogleMap; import com.google.android.gms.maps.OnMapReadyCallback; import com.google.android.gms.maps.SupportMapFragment; import com.google.android.gms.maps.model.LatLng; import com.google.android.gms.maps.model.MapStyleOptions; /** * A styled map using JSON styles from a string resource. */ public class MapsActivityString extends AppCompatActivity implements OnMapReadyCallback { private static final String TAG = MapsActivityString.class.getSimpleName(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // Retrieve the content view that renders the map. setContentView(R.layout.activity_maps_string); // Get the SupportMapFragment and register for the callback // when the map is ready for use. SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager() .findFragmentById(R.id.map); mapFragment.getMapAsync(this); } /** * Manipulates the map when it's available. * The API invokes this callback when the map is ready for use. */ @Override public void onMapReady(GoogleMap googleMap) { // Customise the styling of the base map using a JSON object defined // in a string resource file. First create a MapStyleOptions object // from the JSON styles string, then pass this to the setMapStyle // method of the GoogleMap object. boolean success = googleMap.setMapStyle(new MapStyleOptions(getResources() .getString(R.string.style_json))); if (!success) { Log.e(TAG, "Style parsing failed."); } // Position the map's camera near Sydney, Australia. googleMap.moveCamera(CameraUpdateFactory.newLatLng(new LatLng(-34, 151))); } }
กำหนดทรัพยากรสตริงใน /res/values/style_strings.xml
ที่มีการประกาศรูปแบบ JSON ต่อไปนี้เพื่อซ่อนประเด็นทางธุรกิจของ
ความสนใจ (POI) ในไฟล์นี้ คุณต้องใช้แบ็กสแลชเพื่อหลีกหนี
เครื่องหมายอัญประกาศ:
การประกาศรูปแบบต่อไปนี้ซ่อนประเด็นทางธุรกิจของ ไอคอนความสนใจ (POI) และไอคอนการขนส่งสาธารณะ:
เลย์เอาต์ (activity_maps.xml
) จะมีลักษณะดังนี้
การประกาศรูปแบบ JSON
แผนที่ที่มีการจัดรูปแบบจะใช้สองแนวคิดในการปรับใช้สีและการเปลี่ยนแปลงลักษณะอื่นๆ กับ แผนที่:
- ตัวเลือกจะระบุองค์ประกอบทางภูมิศาสตร์ที่คุณสามารถ
รูปแบบบนแผนที่ ซึ่งรวมถึงถนน สวนสาธารณะ แหล่งน้ำ และ
รวมถึงป้ายกำกับด้วย ตัวเลือกประกอบด้วยฟีเจอร์
และ องค์ประกอบ ซึ่งระบุเป็น
featureType
และ พร็อพเพอร์ตี้elementType
- เครื่องมือจัดแต่งทรงผมคือคุณสมบัติด้านสีและการมองเห็นที่คุณสามารถ นำไปใช้กับองค์ประกอบต่างๆ ของแผนที่ ซึ่งจะกำหนดสีที่แสดงโดยใช้ ชุดค่าผสมของโทนสี สี และความสว่าง/แกมมา
ดูข้อมูลอ้างอิงสไตล์สำหรับคำอธิบายโดยละเอียดเกี่ยวกับ ตัวเลือกการจัดรูปแบบ JSON
วิซาร์ดการจัดรูปแบบ Maps Platform
ใช้วิซาร์ดการจัดรูปแบบแพลตฟอร์ม Maps เป็นวิธีที่รวดเร็วในการสร้าง ออบเจ็กต์การจัดรูปแบบ JSON Maps SDK สำหรับ Android สนับสนุนรูปแบบเดียวกัน เป็น Maps JavaScript API
ตัวอย่างโค้ดแบบเต็ม
ที่เก็บ ApiDemos บน GitHub ประกอบด้วย ตัวอย่างที่สาธิตการใช้การจัดรูปแบบ