Bu kılavuzda, bir geziyi takip ettiğinizde Android uygulamanızda görüntülenen haritayı özelleştirebileceğiniz yöntemler açıklanmaktadır. Haritanın görünümünü ve tarzını aşağıdaki şekillerde özelleştirebilirsiniz:
- Bulut tabanlı harita stilleriyle haritaya stil uygulama
- Kamerayı geziye odaklanacak şekilde ayarlama
- İşaretleri özelleştirme
- Çoklu çizgileri özelleştirme
Bulut tabanlı harita stilleri ile haritaya stil uygulama
Bulut tabanlı harita stillerini kullanarak haritalar bileşeninin görünümünü ve tarzını özelleştirin. Google Haritalar'ı kullanan tüm uygulamalarınız için Google Cloud Console'da harita stilleri oluşturup düzenleyebilirsiniz. Bu işlem için kodunuzda herhangi bir değişiklik yapmanız gerekmez. Daha fazla bilgi için Bulut tabanlı harita stilleri başlıklı makaleyi inceleyin.
Hem ConsumerMapView
hem de ConsumerMapFragment
sınıfları bulut tabanlı harita stilini destekler.
Bulut tabanlı harita stillerini kullanmak için seçili harita oluşturma aracının LATEST
olduğundan emin olun. Aşağıdaki bölümlerde, projenizde bulut tabanlı harita stilini nasıl kullanacağınızla ilgili örnekler gösterilmektedir.
ConsumerMapView
ConsumerMapView
içinde bulut tabanlı harita stilini kullanmak için GoogleMapOptions
üzerinde mapId
alanını ayarlayın ve GoogleMapOptions
'yi getConsumerGoogleMapAsync(ConsumerMapReadyCallback, Fragment,
GoogleMapOptions) veya getConsumerGoogleMapAsync(ConsumerMapReadyCallback, FragmentActivity,
GoogleMapOptions) işlevine iletin.
Örnek
Java
public class SampleAppActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ConsumerMapView mapView = findViewById(R.id.consumer_map_view);
if (mapView != null) {
GoogleMapOptions optionsWithMapId = new GoogleMapOptions().mapId("map-id");
mapView.getConsumerGoogleMapAsync(
new ConsumerMapReadyCallback() {
@Override
public void onConsumerMapReady(@NonNull ConsumerGoogleMap consumerGoogleMap) {
// ...
}
},
/* fragmentActivity= */ this,
/* googleMapOptions= */ optionsWithMapId);
}
}
}
Kotlin
class SampleAppActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val mapView = findViewById(R.id.consumer_map_view) as ConsumerMapView
val optionsWithMapId = GoogleMapOptions().mapId("map-id")
mapView.getConsumerGoogleMapAsync(
object : ConsumerGoogleMap.ConsumerMapReadyCallback() {
override fun onConsumerMapReady(consumerGoogleMap: ConsumerGoogleMap) {
// ...
}
},
/* fragmentActivity= */ this,
/* googleMapOptions= */ optionsWithMapId)
}
}
ConsumerMapFragment
ConsumerMapFragments'te bulut tabanlı harita stillerini kullanmanın iki yolu vardır:
- XML ile statik olarak.
newInstance
ile dinamik olarak.
XML ile statik olarak
Bulut tabanlı harita stilini ConsumerMapFragment
içinde XML ile kullanmak için map:mapId
XML özelliğini belirtilen mapId
ile ekleyin. Aşağıdaki örneğe bakın:
<fragment
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:map="http://schemas.android.com/apk/res-auto"
android:name="com.google.android.libraries.mapsplatform.transportation.consumer.view.ConsumerMapFragment"
android:id="@+id/consumer_map_fragment"
map:mapId="map-id"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
newInstance
ile dinamik olarak
ConsumerMapFragment
içinde newInstance
ile bulut tabanlı harita stilleri kullanmak için GoogleMapOptions
üzerinde mapId
alanını ayarlayın ve GoogleMapOptions
öğesini newInstance
olarak iletin. Aşağıdaki örneğe bakın:
Java
public class SampleFragmentJ extends Fragment {
@Override
public View onCreateView(
@NonNull LayoutInflater inflater,
@Nullable ViewGroup container,
@Nullable Bundle savedInstanceState) {
final View view = inflater.inflate(R.layout.consumer_map_fragment, container, false);
GoogleMapOptions optionsWithMapId = new GoogleMapOptions().mapId("map-id");
ConsumerMapFragment consumerMapFragment = ConsumerMapFragment.newInstance(optionsWithMapId);
getParentFragmentManager()
.beginTransaction()
.add(R.id.consumer_map_fragment, consumerMapFragment)
.commit();
consumerMapFragment.getConsumerGoogleMapAsync(
new ConsumerMapReadyCallback() {
@Override
public void onConsumerMapReady(@NonNull ConsumerGoogleMap consumerGoogleMap) {
// ...
}
});
return view;
}
}
Kotlin
class SampleFragment : Fragment() {
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?): View? {
val view = inflater.inflate(R.layout.consumer_map_fragment, container, false)
val optionsWithMapId = GoogleMapOptions().mapId("map-id")
val consumerMapFragment = ConsumerMapFragment.newInstance(optionsWithMapId)
parentFragmentManager
.beginTransaction()
.add(R.id.consumer_map_fragment, consumerMapFragment)
.commit()
consumerMapFragment.getConsumerGoogleMapAsync(
object : ConsumerMapReadyCallback() {
override fun onConsumerMapReady(consumerGoogleMap: ConsumerGoogleMap) {
// ...
}
})
return view
}
}
Bir geziye odaklanmak için kamera yakınlaştırmasını ayarlama
Etkin bir gezi paylaşımı oturumu sırasında, kamera yakınlaştırma özelliğini kullanabilir ve şu iki yöntemden birini kullanarak odaklanabilirsiniz:
AutoCamera
:AutoCamera
kullanmak istiyorsanız hiçbir şey yapmanız gerekmez. Kamera, geziyi takip eder. Ayrıntılı bilgi içinAutoCamera
başlıklı makaleyi inceleyin.Kamera davranışını özelleştirme: Kamera davranışını özelleştirmek için
AutoCamera
özelliğini devre dışı bırakıp özelleştirmelerinizi yapmanız gerekir. Ayrıntılar için Kamera davranışını özelleştirme başlıklı makaleye göz atın.
AutoCamera
, kamerayı ortalayın
Tüketici SDK'sı, Haritalar SDK'sının yerleşik Konumum düğmesinde varsayılan olarak etkinleştirilen bir AutoCamera
özelliği sağlar. Kamera, gezi rotasına ve sonraki
yol ara noktasına odaklanmak için görüntüyü yakınlaştırır.
AutoCamera
kullanmak istiyorsanız uygulamayı etkinleştirdiğinizden emin olun. Daha fazla bilgi için isAutoCameraEnabled
başlıklı makaleyi inceleyin.
Konumum düğmesiyle ilgili ayrıntılar için Maps JavaScript API dokümanlarındaki Konumum düğmesine bakın.
Kamera davranışını özelleştirme
Kamera davranışını daha fazla kontrol etmek için AutoCamera
'ü devre dışı bırakmak ve kamera davranışını manuel olarak özelleştirmek üzere aşağıdaki adımları uygulayın.
ConsumerController.setAutoCameraEnabled() kullanarak
AutoCamera
'ü devre dışı bırakın.ConsumerController.getCameraUpdate() işlevini kullanarak önerilen kamera sınırlarını alın.
CameraUpdate
bağımsız değişkenini aşağıdaki Android işlevlerinden birine gönderin: