2016-03-15 76 views
0

标记由用户放在地图上,并存储在使用SQLite存储的ArrayList中。标记如下所示。 enter image description here如何通过点击按钮来绘制存储在ArrayList中的标记?

当用户点击查看时,数据恢复如下。 enter image description here

当用户点击更新按钮时,View上的所有标记都应该绘制在Map上。我应该如何使用哪些代码来绘制ArrayList(LatLongposition)中的值? 我如何在地图标记上绘制ArrayList(LatLongposition)?

private void UpdatData() { 
    btnUpdate.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      //LatLongPosition is a object of the ArrayList 
      boolean isUpdate = myDb.updateData(id.getText().toString(), LatLongPosition); 
      PolylineOptions polylineOptions = new PolylineOptions().addAll(LatLongPosition); 
      Polyline p = GoogleMap.addPolyline(polylineOptions); 
      p.setPoints(LatLongPosition); 
      /*if (marker1 == null) { 
       marker1 = GoogleMap.addMarker(new MarkerOptions() 
           .position(p) 
           .title("Start Position") 
           .snippet(String.valueOf(googleMap.getCameraPosition())) 
           .icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_BLUE)) 
       );*/ 
      if (isUpdate == true) 
       Toast.makeText(ActivityMapDisplay.this, "Data Updated", Toast.LENGTH_SHORT).show(); 
      else 
       Toast.makeText(ActivityMapDisplay.this, "Data Not Updated", Toast.LENGTH_SHORT).show(); 

     } 
    }); 
} 

回答

0

你只需要遍历您的List

for (LatLng position : LatLongPosition) { 
    GoogleMap.addMarker(new MarkerOptions() 
      .position(position) 
      .icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_BLUE))); 
} 

无论如何,考虑到必须遵循编码约定帐户,和变量名必须以小写字符开头。因此,您的GoogleMap必须命名为googleMap,并且您的LatLongPosition变量必须命名为latLongPosition

+0

我应该在DatabaseHelper类上编写一些代码吗?更新方法?因为我确实把上面的代码,但标记不被绘制。 –

+0

LatLng的ArrayList的名称是什么?您的ArrayList是否在您的onClick方法上为空? – antonio

+0

它的私人最终ArrayList LatLongPosition = new ArrayList <>(); ArrayList在onClick方法中不是空的 –