1
Aşağıdaki örnekte, bir ülke bir ülke seçtiğinde, dünyanın döndüğü ve o ülkeye yöneldiğini görüyorum. Bir ülkeye tıklandığında, dünyanın o ülkeye gitmesi için nasıl kodlayabilirim?D3 - Dünyayı tıklatılan ülkeye ortalayın
Ben mouseover olaydan önce tıklama işleyicisi bir ekleme yapmaya çalıştık ama işe görünmüyor. Herhangi bir fikir?
.on("click", function(d) {
var rotate = projection.rotate(),
focusedCountry = country(countries, this),
p = d3.geo.centroid(focusedCountry);
svg.selectAll(".focused").classed("focused", focused = false);
//Globe rotating
(function transition() {
d3.transition()
.duration(2500)
.tween("rotate", function() {
var r = d3.interpolate(projection.rotate(), [-p[0], -p[1]]);
return function(t) {
projection.rotate(r(t));
svg.selectAll("path").attr("d", path)
.classed("focused", function(d, i) { return d.id == focusedCountry.id ? focused = d : false; });
};
})
})();
})
çalışan komik ne biliyoruz? Uluslararası tarih çizgisini geçerseniz, dünya geri dönecektir! Örneğin: dünyayı iki veya üç kez döndürün ve belirli bir ülkeyi merkeze yakın konumlandırın. O ülkeyi tıklarsanız, dünyanın biraz dönmesini ve ülkenin merkezini oluşturmasını beklerdin, değil mi? Fakat bunun yerine, bu iki veya üç kez geri dönecek ve ardından ülkeyi ortalayacak! –
nopes! Bunu yeniden yapamazdım :) birçok kez denedi ama sıra dışı bir şey bulamadı ... – Cyril
Gerçekten mi? Belki sadece tarayıcım? Bunu deneyin: projeksiyonunuz merkezde batı Afrika ile başlar. Projeksiyonun tam ortasına gelene kadar, projeksiyonu batıya doğru hareket ettirin (dünyayı batıdan doğuya doğru normal şekilde döndürün). Şimdi Avustralya'ya tıklayın. Tarayıcımda, dünya doğuya tam bir dönüş yapıyor ve ardından Avustralya'ya yerleşiyor. –