@Override
  public JSONObject toJSON() throws JSONException {
    JSONObject oJSONOut = new JSONObject();
    oJSONOut.put(GEOJSON_TYPE, GEOJSON_TYPE_Feature);
    oJSONOut.put(GEOJSON_GEOMETRY, mGeometry.toJSON());
    JSONObject oJSONProp = new JSONObject();

    for (int i = 0; i < mFieldData.size(); i++) {
      String key = mFields.get(i).getFieldName();
      oJSONProp.put(key, mFieldData.get(i));
    }
    oJSONOut.put(GEOJSON_PROPERTIES, oJSONProp);
    return oJSONOut;
  }
  @Override
  public void fromJSON(JSONObject jsonObject) throws JSONException {
    if (!jsonObject.getString(GEOJSON_TYPE).equals(GEOJSON_TYPE_Feature))
      throw new JSONException("not valid geojson feature");
    JSONObject oJSONGeom = jsonObject.getJSONObject(GEOJSON_GEOMETRY);
    mGeometry = GeoGeometry.fromJson(oJSONGeom);
    JSONObject jsonAttributes = jsonObject.getJSONObject(GEOJSON_PROPERTIES);
    Iterator<String> iter = jsonAttributes.keys();
    while (iter.hasNext()) {
      String key = iter.next();
      Object value = jsonAttributes.get(key);

      mFieldData.add(value);
    }
  }