Java Skmap自定义注释首次加载的大小增加了一倍
我使用32x32和64x64(视网膜)作为同一个图标。当我尝试使用SKAnnotationView来显示我的图标时,它的大小是原来的两倍(128x128)。清除注释并再次添加后,大小恢复正常(64x64) 请查找下面的代码,我遵循了示例项目代码:Java Skmap自定义注释首次加载的大小增加了一倍,java,android,skmaps,Java,Android,Skmaps,我使用32x32和64x64(视网膜)作为同一个图标。当我尝试使用SKAnnotationView来显示我的图标时,它的大小是原来的两倍(128x128)。清除注释并再次添加后,大小恢复正常(64x64) 请查找下面的代码,我遵循了示例项目代码: SKAnnotation annotation = new SKAnnotation(); annotation.setUniqueID(-1); annotation.setLocation(new SKCoordinate(longitude.d
SKAnnotation annotation = new SKAnnotation();
annotation.setUniqueID(-1);
annotation.setLocation(new SKCoordinate(longitude.doubleValue(), latitude.doubleValue()));
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
SKAnnotationView annotationView = new SKAnnotationView();
if (metrics.densityDpi < DisplayMetrics.DENSITY_HIGH) {
annotationView.setDrawableResourceId(R.drawable.ic_annotation);
annotation.setOffset(new SKScreenPoint(16, 16));
annotationView.setWidth(32);
annotationView.setHeight(32);
annotation.setImageSize(32);
} else {
annotationView.setDrawableResourceId(R.drawable.ic_annotation_retina);
annotation.setOffset(new SKScreenPoint(32, 32));
annotationView.setWidth(64);
annotationView.setHeight(64);
annotation.setImageSize(64);
}
annotation.setAnnotationView(annotationView);
mapView.addAnnotation(annotation, SKAnimationSettings.ANIMATION_NONE);
SKAnnotation=new SKAnnotation();
注释.setUniqueID(-1);
annotation.setLocation(新坐标(经度.doubleValue(),纬度.doubleValue());
DisplayMetrics=新的DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(度量);
SKAnnotationView annotationView=新SKAnnotationView();
if(metrics.densityDpi
可能太晚了,但您可以尝试在以下位置添加注释:
@Override
public void onSurfaceCreated() {
}
callback.
这是我的代码:
public class OfflineMapFragment extends BaseFragment implements SKMapSurfaceListener {
private void addFilteredAnnotations(){
SKAnnotation annotation = new SKAnnotation();
annotation.setUniqueID(15);
annotation.setLocation(new SKCoordinate(Double.parseDouble(lat,long);
annotation.setMininumZoomLevel(5);
annotation.setOffset(new SKScreenPoint(128, 128));
SKAnnotationView annotationView = new SKAnnotationView();
annotationView.setDrawableResourceId(R.drawable.map_icon);
annotationView.setWidth(128);
annotationView.setHeight(128);
annotation.setAnnotationView(annotationView);
mapView.addAnnotation(annotation, SKAnimationSettings.ANIMATION_NONE);
}
@Override
public void onSurfaceCreated() {
addAnnotation();
}
}
我可以通过删除注释并再次添加来解决问题:
mapView.addAnnotation(注释,SKAnimationSettings.ANIMATION\u无);新处理程序(Looper.getMainLooper()).postDelayed(新Runnable(){@Override public void run(){mapView.deleteAnnotation(-1);mapView.addAnnotation(annotation,SKAnimationSettings.ANIMATION_NONE);}},500)代码>我们正在调查这个问题(披露:我在skobbler工作)你能给Nicholas添加一个演示项目来说明这个问题吗?我想这可能是因为我在mapview完成加载曲面之前添加了注释或者没有完全初始化。因此,您将看到正在加载映射,但随后我添加了一个注释。只有在拥有完整代码的情况下,才能调查该问题。如果可能,请添加您的演示项目。另一个想法是,尝试在调用“onSurfaceCreated”之后添加“SKAnnotationView”,谢谢。我不再做那个项目了。希望其他人觉得它有用!