Bağlantı: http://www1.qhoach.com/fare sürükleme openlayers
sürüklerken, bu haritanın panned ... KML özellikleri (daire ile simge) üzerinde sürüklerseniz, hiçbir şey hepsinden
Bağlantı: http://www1.qhoach.com/fare sürükleme openlayers
sürüklerken, bu haritanın panned ... KML özellikleri (daire ile simge) üzerinde sürüklerseniz, hiçbir şey hepsinden
İlk olur Ama uygulamanızda, sorunuzdaki daire simgeleriyle bahsettiğiniz vektör katmanını içeren dört harita seviyesi vardır.
0: "Đường Sá" ||---> Overlay Tiles
1: "Vệ Tinh" ||---> Overlay Tiles
2: "TMS Overlay" ||---> Markers ~ Icons
3: "KML" ||---> Vector
Analiz: birini son sıfır ile başlayan , sadece vektör diğerleri biz işaretleyici katman üzerinde odaklanmak zorunda bu sorunu gelmek için tiles.In paylaşımı olarak kalır, sonuncusu gibi görünüyor, yani özellikleri (simgeler).
Haritadaki gibi gördüğünüz gibi, için sürüklemeyi denediğinizde haritayı tetiklediniz. haritayı sürükleyin. Etkinlik kaydı, haritaya ilk olarak harita için değil, işaretçi katmanı için çalıştığından sürüklenemiyorsunuz. haritayı sürüklemek için tıklattıktan sonra fareyi (sürükleme) tıklamanız gerekir. Bunu vektör katmanında denediğinizde, katmanın katmanları kaplaması için etkinliği geçme şansı yoktur.
Çözüm:
Sana bu böcek türü sorunu ulaşmak için iki yol öneriyoruz. .Bu genellikle kontrol Handler.Feature miras SelectFeature olarak bilinen openlayers bir kontrol yoktur
Let this be the long way
hover.Which üzerinde tıklandığında belirli bir katmandan vektör özelliği, bu işleyici yanıt verebilir anlamına veriyor Herhangi bir çizilen özellikler ile ilgili fare olayı.Yeni geri aramalar, bunlardan birine ihtiyaç duyuyor, bunlardan birine ihtiyaç duyuyorsunuz.. .Tek yapmamız gereken tek şey, tıklama olayı geri kalan fayanslar için yatay kaydırma yapmaktır. Bu denetim Başka layer.To aracılığıyla olayları geçmek için katmanları sağlamak zorunda aktive edildiğinde
var selectFeat = new OpenLayers.Control.SelectFeature(
vector, {toggle: true, clickout:false});
selectFeat.handlers['feature'].stopDown = false;
selectFeat.handlers['feature'].stopUp = false;
map.addControl(selectFeat);//instance of map
selectFeat.activate();
tüm bu eylemler Şimdiye kadar, son bir şey bıraktı yapılan basitçe
layer.events.fallThrough = true;//both for vector and marker layers
sonra, bunu Bunu yapmak için: Bu, işaretçilerin ve kml katmanlarının sırasını değiştiriyor. layers.You z-endeksi yüksek id sahip tabaka tabakaların, dizinin üstünde kontrol edilebilir olduğunu
And this should be the easiest way
da yüksek Z-dizini vardır. Bu çözeltinin ek olarak
layer.setZIndex(...any number...);
, kolay yolu sadece simgeler tüm ani tıklayarak özellikleri uzun bir yol olmadan kayıp olabilir harita aracılığıyla sürüklemek için izin verir, bu yüzden onları geride bırakmak sizin seçiminiz.
Fare olayları bir svg Vector overlay ile katmanlara altından yaymak istemiyor. Yukarıdaki çözüm, tüm işaretleyici HTML katmanlarının tüm Vector SVG katmanlarından daha yüksek bir zindex olmasını gerektirir.
aşağıdaki CSS svg elemanı içinden olayları yayılan/kısım kısım etrafında bir potansiyel sağlar, ancak svg kaplaması olan herhangi bir vektör elemanları olduğu sürece:
/** Hack so mouse events propagate(bubble) through svg elements, but not the
images within svg */
.olLayerDiv svg {
pointer-events: none;
}
.olLayerDiv svg * {
pointer-events: auto;
}
fallThrough eklenirken yukarıda CSS birleştirin : Haritalar, katmanlar ve kontroller içindeki tüm OpenLayers etkinlik nesnelerine true.
// map events
var map = new OpenLayers.Map(div, { fallThrough:true });
// layer events
var lvec = new OpenLayers.Layer.Vector(....);
lvec.events.fallThrough = true
map.addLayers([lvec])
// all map controls
var ctrl = new OpenLayers.Control.SelectFeature(lvec, {...
fallThrough: true, autoActivate:true });
map.addControl(ctrl)
Çok teşekkür ederim! Doğru çalışıyor ... – KimKha
Benim de sorumu yanıtladı! Biraz değiştirmek zorunda kaldım ama son derece yararlı, teşekkürler! – Jared
harika dostum !!! TEŞEKKÜRLER !!!! –