我创建了D3 globe。 我陷入困境,现在点击情节,地图放大但不顺利放大。 我需要通过平滑过渡放大地图。 http://projectsdemo.net/globe/v4/
public void onCreate(Bundle savedInstanceState) {
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
AAA asyncTask = new AAA();
try {
((AAA) asyncTask).execute(null, null, null,null).get();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ExecutionException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
}
public class AAA extends AsyncTask<Object, String, Object> {
private ProgressDialog progDailog = null;
@Override
protected void onPreExecute() {
super.onPreExecute();
progDailog = new ProgressDialog(ViewTestActivity.this);
progDailog.setMessage("Loading...");
progDailog.setIndeterminate(false);
progDailog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
progDailog.setCancelable(true);
progDailog.show();
}
@Override
protected Object doInBackground(Object... params) {
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return params;
}
@Override
protected void onPostExecute(Object result) {
progDailog.dismiss();
}
}
答案 0 :(得分:0)
因为这个原因,你的轮播正在转变:
.rotate(r(t))
其中r
是插值函数,t
是转换中的当前步骤。它看起来像你的规模:
.scale(Math.max(minScale, Math.min(maxScale, k)))
只是在转换的每一步都设置为相同的值。
您需要为比例设置单独的插值函数:
var r = d3.interpolate(projection.rotate(), [-centroid[0], -centroid[1], 0]),
r2 = d3.interpolate(project.scale(), Math.max(minScale, Math.min(maxScale, k)));
然后,在转换过程中使用它:
projection.rotate(r(t))
.scale(r2(t))
...