我无法弄清楚它的起源ConcurrentModificationException.在我的activity呼唤中
updateMapOverlay().我也在updateMapOverlay()另一个TimerTask定期调用的Thread(a )中调用.updateMapOverlay()从两个线程调用时,我正在使用适当的锁.这个问题是由于我updateMapOverlay从非UI线程(即TimerTask)中调用而引起的.还有其他人遇到过类似的问题吗?
private void updateMapOverlay() {
this.itemizedOverlay.refreshItems(createOverlayItemsList());
List<Overlay> overlays = mapView.getOverlays();
overlays.clear();
overlays.add(cotItemizedOverlay);
this.mapview.invalidate();
}
Run Code Online (Sandbox Code Playgroud)
ConcurrentModificationException
谢谢.
例外:
W/dalvikvm(10641): threadid=3: thread exiting with uncaught exception (group=0x4001b180)
E/AndroidRuntime(10641): Uncaught handler: thread main exiting due to uncaught exception
E/AndroidRuntime(10641): java.util.ConcurrentModificationException
E/AndroidRuntime(10641): at java.util.AbstractList$SimpleListIterator.next(AbstractList.java:64)
E/AndroidRuntime(10641): at com.google.android.maps.OverlayBundle.draw(OverlayBundle.java:41)
E/AndroidRuntime(10641): at com.google.android.maps.MapView.onDraw(MapView.java:494)
E/AndroidRuntime(10641): at android.view.View.draw(View.java:6535)
E/AndroidRuntime(10641): at android.view.ViewGroup.drawChild(ViewGroup.java:1531)
E/AndroidRuntime(10641): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1258)
E/AndroidRuntime(10641): at android.view.ViewGroup.drawChild(ViewGroup.java:1529)
E/AndroidRuntime(10641): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1258)
E/AndroidRuntime(10641): …Run Code Online (Sandbox Code Playgroud) concurrency android google-maps itemizedoverlay android-mapview
我在我的android上创建了一个简单的MapActivity,并发现它的MapView无法放大到19级以上.放大按钮只是变灰了.调用zoomIn()方法也无效,级别仍然保持在19.
但是,当我启动官方Google地图应用程序时,地图的完全相同区域会成功将两个级别放大到21.
任何人都可以告诉我如何在我自己的应用程序中进一步放大?我是否缺少明确设置一些参数(manifest,mapactivity,mapcontroller)?到目前为止真的找不到它,并对此感到很困惑,看到了差异.
最近有人问过类似的问题,但也没有答案.
在mapview中的某些Android设备上,Google徽标显示为灰色或红色矩形.是否可以从mapview中删除它?
我想显示一个MapView,可用于选择StreetView在单独区域中显示的点.我知道API在一个进程中不允许多个MapView.
如何使StreetView显示在与显示MapView不同的区域?
我已经能够毫无问题地获取静态街景,但我希望拥有动态街景和MapView.
aTdHvAaNnKcSe(感谢提前)
我有一个地图视图,从当前位置绘制半径叠加.但为此,我需要知道地图上的当前缩放级别.我怎样才能做到这一点?
我在地图视图上有一个注释.我可以通过编程方式选择它,但我点击它没有任何反应.你可以帮帮我吗?有没有人遇到类似的问题?这是设置anotations的方法:
- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id<MKAnnotation>)annotation
{
MKAnnotationView *aView = [mapView dequeueReusableAnnotationViewWithIdentifier:@"MapVC"];
if (!aView) {
aView = [[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"MapVC"];
aView.canShowCallout = YES;
aView.draggable=YES;
aView.leftCalloutAccessoryView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 30, 30)];
// could put a rightCalloutAccessoryView here
}
aView.annotation = annotation;
[(UIImageView *)aView.leftCalloutAccessoryView setImage:nil];
return aView;
}
Run Code Online (Sandbox Code Playgroud)
并将它们添加到地图视图中:
- (void)updateMapView
{
if (self.mapView.annotations) [self.mapView removeAnnotations:self.mapView.annotations];
if (self.annotation) [self.mapView addAnnotation:self.annotation];
}
Run Code Online (Sandbox Code Playgroud)
并且对按下注释做出反应:
- (void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)aView
{
NSLog(@"did select annotation");
}
Run Code Online (Sandbox Code Playgroud)
顺便说一句,方法[self.mapView selectAnnotation:annotation]有效,但没有提出一个标注(我用断点检查它).虽然只是录制注释不会(再次通过断点).
我有一个mapView,其中几个点用标记绘制,每个标记具有不同的纬度和经度,可能在附近可能相邻也可能不相近.有没有办法让MapView打开到最深的缩放级别,将屏幕上的所有点集中在一起?
我知道mapController有一个setZoom和setCenter属性,但是如何确定这些方法的值呢?或者还有另一种更简单的方法来实现这一目标吗?
我试图在Android上将MapView显示为圆圈,就像这样:
protected void onDraw(Canvas canvas) {
Path path = new Path();
path.addCircle(400,200,100,Direction.CW);
canvas.clipPath(path);
super.onDraw(canvas);
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,MapView(v2:)com.google.android.gms.maps.MapView组件似乎忽略了这一点,而只是采取该圆的边界/矩形来绘制地图:(
我一直在网上搜索一段时间,没有找到一个很好的解决方案.
这甚至可能吗?(Blundell解决方案对我不起作用,因为我希望背景在地图上可见)
谢谢!
XML(activity_maptest.xml):
<?xml version="1.0" encoding="utf-8"?>
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/map"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:name="com.google.android.gms.maps.MapFragment"/>
Run Code Online (Sandbox Code Playgroud)
Java(Maptest.java):
package com.example.app;
import android.app.Activity;
import android.os.Bundle;
public class Maptest extends Activity {
public class MapActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_maptest);
}
}
}
Run Code Online (Sandbox Code Playgroud)
表现:
<uses-feature
android:glEsVersion="0x00020000"
android:required="true" />
.
.
.
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.CALL_PHONE" />
<application
android:allowBackup="true"
android:icon="@drawable/icon_launcher"
android:label="@string/app_name"
android:theme="@style/Theme.AppCompat.Light.DarkActionBar" >
.
.
.
<activity
android:name="com.example.app.Maptest"
android:label="@string/title_activity_maptest" >
</activity> …Run Code Online (Sandbox Code Playgroud) 情侣飞蛾前我在Android N上测试这个应用程序,一切都会正常工作,但现在我有错误.现在我使用MapFragment并出现此错误:
05-09 23:22:35.816 11112-11112/pc.dd.sex_startup E/AndroidRuntime: FATAL EXCEPTION: main
Process: pc.dd.sex_startup, PID: 11112
java.lang.RuntimeException: Unable to start activity ComponentInfo{pc.dd.sex_startup/pc.dd.sex_startup.LogIn.Maps.Map}: android.view.InflateException: Binary XML file line #9: Binary XML file line #9: Error inflating class fragment
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2423)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2483)
at android.app.ActivityThread.access$900(ActivityThread.java:153)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1349)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5441)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:738)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:628)
Caused by: android.view.InflateException: Binary XML file line #9: Binary XML file line #9: Error inflating class fragment
at android.view.LayoutInflater.inflate(LayoutInflater.java:543)
at android.view.LayoutInflater.inflate(LayoutInflater.java:427)
at android.view.LayoutInflater.inflate(LayoutInflater.java:374)
at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:280) …Run Code Online (Sandbox Code Playgroud) android-mapview ×10
android ×8
google-maps ×4
android-maps ×1
annotations ×1
canvas ×1
clipping ×1
concurrency ×1
ios ×1
masking ×1
objective-c ×1
select ×1
zoom ×1