구글 맵에서 RxJava 비동기를 사용하여 대량의 태그를 추가
8989 단어 Android
build.gradle
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:24.1.1'
compile 'com.google.android.gms:play-services-maps:9.6.1'
compile 'com.google.android.gms:play-services-location:9.6.1'
compile 'io.reactivex:rxandroid:1.1.0'
}
MainActivity.java
private GoogleMap mMap;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_maps);
SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
.findFragmentById(R.id.map);
mapFragment.getMapAsync(this);
}
@Override
public void onMapReady(GoogleMap googleMap) {
mMap = googleMap;
final ArrayList<LatLng> latlngs = new ArrayList<>();
for(int i = 0; i < 400; i++) {
latlngs.add(new LatLng(-34, 150 + i * 1));
}
mMap.moveCamera(CameraUpdateFactory.newLatLng(latlngs.get(0)));
Observable
.create(new Observable.OnSubscribe<LatLng>() {
@Override
public void call(Subscriber<? super LatLng> subscriber) {
for(LatLng latlng : latlngs) {
sleep(100);
Log.d("デバッグ","追加");
subscriber.onNext(latlng);
}
subscriber.onCompleted();
}
})
// .onBackpressureBuffer()
.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<LatLng>() {
@Override
public void onCompleted() {
}
@Override
public void onError(Throwable e) {
}
@Override
public void onNext(LatLng latlng) {
mMap.addMarker(new MarkerOptions().position(latlng).title("YES"));
}
});
}
private void sleep(int time) {
try{
Thread.sleep(time);
}catch(InterruptedException e){}
}
Reference
이 문제에 관하여(구글 맵에서 RxJava 비동기를 사용하여 대량의 태그를 추가), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/araiyusuke/items/9a429771aec7e9868f88텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)