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, bir yer bindirmelerini gösteren örnek:
- GroundOverlayDemoActivity - Java: Yer paylaşımı özellikleri ve Java'daki dinleyiciler
- GroundOverlayDemoActivity - Kotlin: Yer bindirme özellikleri ve Kotlin dinleyicileri
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. İsteğe bağlı olarak
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:
- Yeni bir
GroundOverlayOptions
nesnesi gösterin - Resmi
BitmapDescriptor
olarak belirtin. - Resmin konumunu, mevcut yöntemlerden birini kullanarak ayarlayın:
position(LatLng location, float width, float height)
position(LatLng location, float width)
positionFromBounds(LatLngBounds bounds)
transparency
gibi isteğe bağlı özellikleri istediğiniz gibi ayarlayın.- 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 // 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 görüntüyü 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. Burada 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.