Çarpışma davranışını, irtifayı ve görünürlüğü kontrol etme

Platform seçin: Android iOS JavaScript

Bu sayfada, gelişmiş işaretçilerin aşağıdaki yönlerini nasıl kontrol edeceğiniz açıklanmaktadır:

  • İşaretçi için çakışma davranışı ayarlama
  • İşaretçi yüksekliğini ayarlama
  • Harita yakınlaştırma seviyesine göre işaretçi görünürlüğünü kontrol etme

İşaretçi için çakışma davranışı ayarlama

Çakışma davranışı, bir işaretçinin başka bir işaretçiyle çakışması (üst üste gelmesi) durumunda nasıl görüntüleneceğini kontrol eder. Çakışma davranışı yalnızca vektör haritalarda desteklenir.

Çakışma davranışını ayarlamak için AdvancedMarkerElement.collisionBehavior özelliğini aşağıdakilerden birine ayarlayın:

  • REQUIRED: (varsayılan) Çakışmadan bağımsız olarak işaretçiyi her zaman gösterir.
  • OPTIONAL_AND_HIDES_LOWER_PRIORITY İşaretçiyi yalnızca diğer işaretçilerle çakışmıyorsa gösterin. Bu türden iki işaretçi çakışırsa daha yüksek zIndex değerine sahip olan gösterilir. Aynı zIndex öğesine sahiplerse dikey ekran konumu daha altta olan gösterilir.
  • REQUIRED_AND_HIDES_OPTIONAL Çakışmadan bağımsız olarak işaretçiyi her zaman gösterin ve işaretçiyle çakışacak OPTIONAL_AND_HIDES_LOWER_PRIORITY işaretçileri veya etiketleri gizleyin.

Aşağıdaki örnekte bir işaretçi için çarpışma davranışının nasıl ayarlanacağı gösterilmektedir:

TypeScript

const advancedMarker = new AdvancedMarkerElement({
    position: { lat, lng },
    collisionBehavior,
});
mapElement.appendChild(advancedMarker);

JavaScript

const advancedMarker = new AdvancedMarkerElement({
    position: { lat, lng },
    collisionBehavior,
});
mapElement.appendChild(advancedMarker);

İşaretçi yüksekliğini ayarlama

Vektör haritalarda, bir işaretçinin görüneceği yüksekliği ayarlayabilirsiniz. Bu, işaretlerin 3D harita içeriğiyle ilişkili olarak doğru şekilde görünmesini sağlamak için kullanışlıdır. Bir işaretçinin yüksekliğini ayarlamak için LatLngAltitude seçeneğinin değeri olarak MarkerView.position değerini belirtin:

TypeScript

const pin = new PinElement({
    background: '#4b2e83',
    borderColor: '#b7a57a',
    glyphColor: '#b7a57a',
    scale: 2.0,
});

const marker = new AdvancedMarkerElement({
    // Set altitude to 20 meters above the ground.
    position: {
        lat: 47.65170843460547,
        lng: -122.30754,
        altitude: 20,
    },
});
marker.append(pin);

mapElement.append(marker);

JavaScript

const pin = new PinElement({
    background: '#4b2e83',
    borderColor: '#b7a57a',
    glyphColor: '#b7a57a',
    scale: 2.0,
});

const marker = new AdvancedMarkerElement({
    // Set altitude to 20 meters above the ground.
    position: {
        lat: 47.65170843460547,
        lng: -122.30754,
        altitude: 20,
    },
});
marker.append(pin);

mapElement.append(marker);

Harita yakınlaştırma seviyesine göre işaretçi görünürlüğünü kontrol etme

İşaretçilerin görünürlük değişikliğini inceleyin (önce uzaklaştırın):

Gelişmiş bir işaretçinin görünürlüğünü kontrol etmek için bir zoom_changed dinleyici oluşturun ve aşağıdaki örnekte gösterildiği gibi, yakınlaştırma belirtilen düzeyi aşarsa AdvancedMarkerElement.map değerini null olarak ayarlamak için koşullu bir işlev ekleyin:

TypeScript

mapElement.innerMap.addListener('zoom_changed', () => {
    const zoom = mapElement.innerMap.getZoom();
    for (let i = 0; i < markers.length; i++) {
        const { position, minZoom } = markerOptions[i];
        markers[i].position = zoom! > minZoom ? position : null;
    }
});

JavaScript

mapElement.innerMap.addListener('zoom_changed', () => {
    const zoom = mapElement.innerMap.getZoom();
    for (let i = 0; i < markers.length; i++) {
        const { position, minZoom } = markerOptions[i];
        markers[i].position = zoom > minZoom ? position : null;
    }
});

Sonraki adımlar

İşaretçileri tıklanabilir ve erişilebilir hale getirme