Zemin Bindirmeleri

Platform seçin: Android iOS JavaScript

Zemin bindirmeleri, enlem/boylama bağlı görüntü bindirmelerdir koordinatlar, haritayı sürüklediğinizde veya yakınlaştırdığınızda hareket eder.

Kod örnekleri

GitHub'daki ApiDemos deposu, gösteren örneklem şekli:

Giriş

Zemin bindirme, haritaya sabitlenmiş bir görüntüdür. İşaretçilerden farklı olarak, zemin bindirmeler Dünya'nın yüzeyine göre doğrultulduğundan, ekranın haritayı döndürmek, yatırmak veya yakınlaştırmak resmin yönünü değiştirir. Zemin bindirmeleri, açık durumdaki tek bir alandaki tek bir resmi düzeltmek istediğinizde tıklayın. Resmin büyük bölümünü kaplayan geniş bir görüntü eklemek isterseniz için Karo yer paylaşımı kullanabilirsiniz.

Bindirme ekle

GroundOverlay eklemek için bir GroundOverlayOptions bir resim ve konum ekleyin. İsterseniz resmin harita üzerindeki konumunu etkiler. Projeyi tanımladıktan sonra gerekiyorsa nesneyi GoogleMap.addGroundOverlay() yöntemini kullanabilirsiniz. addGroundOverlay() yöntemi, GroundOverlay nesne; her çeyrekte bu nesneyi değiştirin.

Adım adım:

  1. Yeni bir GroundOverlayOptions nesnesi gösterin
  2. Resmi BitmapDescriptor olarak belirtin.
  3. Resmin konumunu, mevcut yöntemlerden birini kullanarak ayarlayın:
    • position(LatLng location, float width, float height)
    • position(LatLng location, float width)
    • positionFromBounds(LatLngBounds bounds)
  4. transparency gibi isteğe bağlı özellikleri istediğiniz gibi ayarlayın.
  5. Resmi haritaya eklemek için GoogleMap.addGroundOverlay() numaralı telefonu arayın.

Aşağıdaki örnekte mevcut bir zemine zemin bindirmenin nasıl ekleneceği gösterilmektedir GoogleMap nesne algılandı.

Kotlin

val newarkLatLng = LatLng(40.714086, -74.228697)
val newarkMap = GroundOverlayOptions()
    .image(BitmapDescriptorFactory.fromResource(R.drawable.newark_nj_1922))
    .position(newarkLatLng, 8600f, 6500f)
map.addGroundOverlay(newarkMap)

      

Java

LatLng newarkLatLng = new LatLng(40.714086, -74.228697);

GroundOverlayOptions newarkMap = new GroundOverlayOptions()
    .image(BitmapDescriptorFactory.fromResource(R.drawable.newark_nj_1922))
    .position(newarkLatLng, 8600f, 6500f);
map.addGroundOverlay(newarkMap);

      

Bir zemin bindirmesini ekledikten sonra değiştirmek veya kaldırmak isterseniz için, GroundOverlay nesnesini tuttuğunuzdan emin olun. Şunları yapabilirsiniz: daha sonra bu nesnede değişiklik yaparak bindirmeyi değiştirebilirsiniz.

Kotlin

// Add an overlay to the map, retaining a handle to the GroundOverlay object.
val imageOverlay = map.addGroundOverlay(newarkMap)

      

Java

// Add an overlay to the map, retaining a handle to the GroundOverlay object.
GroundOverlay imageOverlay = map.addGroundOverlay(newarkMap);

      

Bindirmeyi kaldırma

Bir zemin bindirmesini kaldırmak için GroundOverlay.remove() yöntemini kullanabilirsiniz.

Kotlin

imageOverlay?.remove()

      

Java

imageOverlay.remove();

      

Yer paylaşımını değiştirme

Zemin bindirme görüntüsünü haritaya ekledikten sonra GroundOverlay.setImage(BitmapDescriptor) yöntemi.

Kotlin

// Update the GroundOverlay with a new image of the same dimension
imageOverlay?.setImage(BitmapDescriptorFactory.fromResource(R.drawable.newark_nj_1922))

      

Java

// Update the GroundOverlay with a new image of the same dimension
imageOverlay.setImage(BitmapDescriptorFactory.fromResource(R.drawable.newark_nj_1922));

      

setImage() yöntemi, mevcut resmi şuna ait başka bir resimle değiştirir: oluşturmanız önerilir.

Zemin Bindirmesini Konumlandırma

Zemin bindirmenin konumunu belirtmenin iki yolu vardır:

  • Yer paylaşımını ortalamak için LatLng, belirtmek için ise metre cinsinden boyutlar kullanma boyutunu değiştirebilirsiniz.
  • Bölgenin kuzeydoğu ve güneybatı köşelerini belirtmek için LatLngBounds resim.

Zemin bindirmenin konumunu haritası.

Resmi konumlandırmak için konumu kullanma

Resmi eklerken, sabitlemenin sabitleneceği bir EnlBoy belirtirsiniz. ve bindirmenin genişliği (metre cinsinden). İlgili içeriği oluşturmak için kullanılan anchor varsayılan olarak görüntüsüdür. İsteğe bağlı olarak yer paylaşımının yüksekliğini metre cinsinden belirtebilirsiniz. Eğer yer paylaşımının yüksekliğini belirtmezseniz otomatik olarak resmin oranlarını korumak için hesaplanır.

Aşağıdaki kod, bir resmi 40.714086, -74.228697 konumuna yerleştirir. bir evren var. Resim sol alta sabitlenir.

Kotlin

val newarkMap = GroundOverlayOptions()
    .image(BitmapDescriptorFactory.fromResource(R.drawable.newark_nj_1922))
    .anchor(0f, 1f)
    .position(LatLng(40.714086, -74.228697), 8600f, 6500f)

      

Java

GroundOverlayOptions newarkMap = new GroundOverlayOptions()
    .image(BitmapDescriptorFactory.fromResource(R.drawable.newark_nj_1922))
    .anchor(0, 1)
    .position(new LatLng(40.714086, -74.228697), 8600f, 6500f);

      

Bir resmi konumlandırmak için LatLngBounds'u kullanma

Resmi içeren bir LatLngBounds sağlarsınız. İlgili içeriği oluşturmak için kullanılan LatLngBounds, resmin kuzeydoğu ve güneybatı köşelerini belirler. Zaman resim haritaya çizildiğinde, sınırlara uyacak şekilde döndürülür. Öğe sınırları orijinal en boy oranıyla eşleşmiyorsa resim eğik olacaktır.

Aşağıdaki kod, haritaya Güneybatı köşesine bağlı bir görüntü yerleştirir. 40.712216,-74.22655 ve kuzeydoğu köşesi şuna bağlı: 40.773941, -74.12544.

Kotlin

val newarkBounds = LatLngBounds(
    LatLng(40.712216, -74.22655),  // South west corner
    LatLng(40.773941, -74.12544)   // North east corner
)
val newarkMap = GroundOverlayOptions()
    .image(BitmapDescriptorFactory.fromResource(R.drawable.newark_nj_1922))
    .positionFromBounds(newarkBounds)

      

Java

LatLngBounds newarkBounds = new LatLngBounds(
    new LatLng(40.712216, -74.22655),       // South west corner
    new LatLng(40.773941, -74.12544));      // North east corner
GroundOverlayOptions newarkMap = new GroundOverlayOptions()
    .image(BitmapDescriptorFactory.fromResource(R.drawable.newark_nj_1922))
    .positionFromBounds(newarkBounds);

      

Verileri zemin bindirmeyle ilişkilendirme

GroundOverlay.setTag() numaralı telefonu arayarak bir rastgele veri nesnesini kullanır ve verileri alır nesne (GroundOverlay.getTag()) kullanarak.

Aşağıdaki kod örneğinde, zemin bindirmeli bir dize açıklaması saklanır:

Kotlin

val sydneyGroundOverlay = map.addGroundOverlay(
    GroundOverlayOptions()
        .image(BitmapDescriptorFactory.fromResource(R.drawable.harbour_bridge))
        .position(LatLng(-33.873, 151.206), 100f)
        .clickable(true)
)
sydneyGroundOverlay?.tag = "Sydney"

      

Java

GroundOverlay sydneyGroundOverlay = map.addGroundOverlay(new GroundOverlayOptions()
    .image(BitmapDescriptorFactory.fromResource(R.drawable.harbour_bridge))
    .position(new LatLng(-33.873, 151.206), 100)
    .clickable(true));

sydneyGroundOverlay.setTag("Sydney");

      

Aşağıda, verileri depolamanın ve almanın yararlı olduğu senaryolarla ilgili bazı örnekler verilmiştir zemin bindirmeli:

  • Uygulamanız farklı zemin bindirmelerine uygun olabilir ve siz de kullanıcı tarafından tıklandığında farklı şekilde ele alınması gerekir.
  • Benzersiz kayıt tanımlayıcıları olan bir sistemle çalışıyor olabilirsiniz. Bu katmanlarda, yer paylaşımları bu sistemdeki belirli kayıtları temsil eder.
  • Yer paylaşımı verileri, kullanabilirsiniz.

Yer bindirme etkinliklerini işleme

Varsayılan olarak, zemin bindirme tıklanabilir değildir. Tıklanabilirliği GroundOverlay.setClickable(boolean)

OnGroundOverlayClickListener kullanın tıklama etkinliklerini dinlemek için YouTube'u kullanabilirsiniz. Bu işleyiciyi harita, çağrı GoogleMap.setOnGroundOverlayClickListener(OnGroundOverlayClickListener) Bir kullanıcı bir zemin bindirmeyi tıkladığında, onGroundOverlayClick(GroundOverlay) geri arama.