双开关盒不能正常工作。 Google映射形状绘图

时间:2015-05-05 14:05:08

标签: google-maps switch-statement polygons popupmenu

我想创建弹出菜单,其中包括:选择地图类型,选择地图上绘制的城墙的形状。

我的问题:

  • 我不知道如何清理一次拾取的形状(或将其切换为无,方法无关紧要)
  • 当我改变形状时,如何让我的地图不再被加载。

    public boolean onOptionsItemSelected(MenuItem item) {
     int id = item.getItemId();
    
         switch(item.getItemId()){
    
     case R.id.mediewal:
         shape = new PolygonOptions();
         mMap.addPolygon(shape);
             break;
    
     case R.id.swedish:
         shape = new PolygonOptions()
        .add(new LatLng(53.426685, 14.565516),
                new LatLng(53.427519, 14.565268),
                ................................
                new LatLng(53.427003, 14.565636))
        .strokeColor(0xB3A60307)
        .fillColor(0xB3670000)
        .strokeWidth(8)
        .geodesic(true);
        mMap.addPolygon(shape);
    
        shape = new PolygonOptions()
        .add(new LatLng(53.420158, 14.557578),
                new LatLng(53.420285, 14.557832),
                ................................
                new LatLng(53.419972, 14.557818))
        .strokeColor(0xB3A60307)
        .fillColor(0xB3670000)
        .strokeWidth(8)
        .geodesic(true);
    
         mMap.addPolygon(shape);
         break;
    
    case R.id.prussian:
         shape = new PolygonOptions();
         mMap.addPolygon(shape);
         break;
     case R.id.none:
         shape = new PolygonOptions();
         mMap.addPolygon(shape);
         break;
    
     }
    
    
     switch(item.getItemId()){
     case R.id.normal_map:
         mapType = GoogleMap.MAP_TYPE_NORMAL;
         break;
    
     case R.id.satellite_map:
         mapType = GoogleMap.MAP_TYPE_SATELLITE;
         break;
    
     case R.id.terrain_map:
         mapType = GoogleMap.MAP_TYPE_TERRAIN;
         break;
    
     case R.id.hybrid_map:
         mapType = GoogleMap.MAP_TYPE_HYBRID;
         break;
     }
    
    
     mMap.setMapType(mapType);
     return super.onOptionsItemSelected(item);
    }
    

当然我只在这里放了一个测试形状。目前它的工作方式如下:我可以选择maptype并选择形状,但是没有办法以另一种方式清理形状,而不是去菜单再去地图。

非常感谢任何帮助

1 个答案:

答案 0 :(得分:0)

通常为了避免反复加载地图我已经在mapTypes的switch case中的每个地图类型下移动了mMap.setMapType(mapType);。从Return电话中移除了这个。

要清理形状,我调用mMap.clear(),从地图中删除所有形状和标记。它对每个人来说都不是完美的解决方案,但就我而言,这已经足够了。

我想要清理一个我们应该调用的形状(带复选框):

 if(item.isChecked()){
         item.setChecked(false);
         polygon2.remove()
         ;}
     else{
         item.setChecked(true);
         polygon2 = mMap.addPolygon(shape2);
         }
         break;

请记住初始化形状,例如private Polygon polygon2;