Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/216.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Skmap自定义注释首次加载的大小增加了一倍_Java_Android_Skmaps - Fatal编程技术网

Java Skmap自定义注释首次加载的大小增加了一倍

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

我使用32x32和64x64(视网膜)作为同一个图标。当我尝试使用SKAnnotationView来显示我的图标时,它的大小是原来的两倍(128x128)。清除注释并再次添加后,大小恢复正常(64x64)

请查找下面的代码,我遵循了示例项目代码:

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”,谢谢。我不再做那个项目了。希望其他人觉得它有用!