UnfoldingMaps在初始化后添加MarkerList

时间:2014-08-10 09:51:50

标签: java processing

我正在编写一个应用程序,我使用库展开地图在地图上显示标记。 该应用程序允许用户选择一年,并根据该值显示其他标记。这很完美,但是当用户选择另一年时,我似乎无法显示其他标记。

我试图完全更新地图,但在第一次之后它没有重新绘制地图。

除此之外我还试图将MarkerManager添加到地图中,但后来我得到了OpenGL的错误。

设置功能:

   public void setup() {

    /*
     * Provincies, set zoom to 10
     */

    size(1000, 800, OPENGL);


    this.map = new UnfoldingMap(this, new Microsoft.RoadProvider());

    map.zoomAndPanTo(belgie, 8);
    map.setPanningRestriction(belgie, 1);
    map.setZoomRange(8, 8);

drawOtherMarker();
    //map.getMarkerManager(markerRemarck.get(keyM)).enableDrawing();

    MapUtils.createDefaultEventDispatcher(this, map);
}

创建MarkerManager并将其添加到地图的功能

    private void createMarkers(ArrayList<double[]> dataMarker) {
    float size = 0;
    int i = 0;
    ListIterator<double[]> dataIt = dataMarker.listIterator();
    ArrayList<SimplePointMarker> markList = new ArrayList<SimplePointMarker>();

    while (dataIt.hasNext()) {
        double[] element = dataIt.next();
        SimplePointMarker point = new SimplePointMarker(new Location(
                element[0], element[1]));

        if (element[2] > 1000)
            size = 120;
        else if (element[2] > 100)
            size = 60;
        else if (element[2] > 10)
            size = 30;
        else
            size = 20;

        point.setRadius(size);

        point.setColor(color(64,64,64,100));

        point.setStrokeColor(color(178,34,34));
        point.setStrokeWeight(30);

        point.setStrokeWeight(0);
        point.setId(Integer.toString(i++));
        markList.add(point);
    }
    MarkerManager man = new MarkerManager(markList);
    map.addMarkerManager(man);
    }

绘制地图并绘制另一组标记时,将调用以下函数:

    public void drawOtherMarker(){
    if(!markerRemarck.containsKey(keyM)){
        markerRemarck.put(keyM, totalMark++);
        createMarkers(dataMarkerProvince);

    }
    if(dataMarkerTown != null){
        markerRemarck.put(keyM + "city", totalMark++);
        createMarkers(dataMarkerTown);
    }

    for(int i = 0; i < totalMark;++i)
        map.getMarkerManager(i).disableDrawing();


  map.getMarkerManager(markerRemarck.get(keyM)).enableDrawing();
    }

另一个函数带来制作标记所需的数据。我似乎没有设法在第一次抽奖后添加MarkerManager。

修改 此地图放在JPanel中。这些年是在JComboBox的帮助下选择的。每年选择一次&#34; dataMarker&#34;包含用于创建标记的信息的变量已更新

提前感谢帮助我。

0 个答案:

没有答案