作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试在单独的线程中更新谷歌地图标记位置。我可以在主线程中很好地更新标记,但是一旦我在单独的线程中尝试它,应用程序就会崩溃。
日志:
06-10 12:35:37.107: E/AndroidRuntime(25915): FATAL EXCEPTION: Thread-2909
06-10 12:35:37.107: E/AndroidRuntime(25915): java.lang.IllegalStateException: Not on the main thread
06-10 12:35:37.107: E/AndroidRuntime(25915): at com.google.l.a.ce.b(Unknown Source)
06-10 12:35:37.107: E/AndroidRuntime(25915): at com.google.maps.api.android.lib6.d.ct.a(Unknown Source)
06-10 12:35:37.107: E/AndroidRuntime(25915): at com.google.maps.api.android.lib6.d.aq.a(Unknown Source)
06-10 12:35:37.107: E/AndroidRuntime(25915): at com.google.android.gms.maps.model.internal.t.onTransact(SourceFile:73)
06-10 12:35:37.107: E/AndroidRuntime(25915): at android.os.Binder.transact(Binder.java:380)
06-10 12:35:37.107: E/AndroidRuntime(25915): at com.google.android.gms.maps.model.internal.zzi$zza$zza.setPosition(Unknown Source)
06-10 12:35:37.107: E/AndroidRuntime(25915): at com.google.android.gms.maps.model.Marker.setPosition(Unknown Source)
和线程:
new Thread(new Runnable() {
Marker mkr = marker;
public void run(){
double lng = 78.486671;
double lat = 17.385044;
mkr.setPosition(new LatLng(lat, lng));
}
}).start();
最佳答案
您可以使用 runOnUiThread()
来修改工作线程内的标记位置,示例请参见 here .
在你的情况下它会是这样的:
new Thread(new Runnable() {
Marker mkr = marker;
public void run(){
runOnUiThread(new Runnable() {
@Override
public void run() {
double lng = 78.486671;
double lat = 17.385044;
mkr.setPosition(new LatLng(lat, lng));
}
});
}
}).start();
关于android - 如何在 android 的单独线程中更新谷歌地图标记位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30764828/
leaflet:一个开源并且对移动端友好的交互式地图 JavaScript 库 中文文档: https://leafletjs.cn/reference.html 官网(英文): ht
我是一名优秀的程序员,十分优秀!