private void save() { if (TextUtils.isEmpty(poiTypeEditText.getText())) { poiTypeEditText.setError(getResources().getString(R.string.please_specify_poi_type)); return; } OsmPoint.Action action = node.getId() == -1 ? OsmPoint.Action.CREATE : OsmPoint.Action.MODIFY; for (Map.Entry<String, String> tag : editPoiData.getTagValues().entrySet()) { if (tag.getKey().equals(EditPoiData.POI_TYPE_TAG)) { final PoiType poiType = allTranslatedSubTypes.get(tag.getValue().trim().toLowerCase()); if (poiType != null) { node.putTag(poiType.getOsmTag(), poiType.getOsmValue()); if (poiType.getOsmTag2() != null) { node.putTag(poiType.getOsmTag2(), poiType.getOsmValue2()); } } else { node.putTag(editPoiData.amenity.getType().getDefaultTag(), tag.getValue()); } // } else if (tag.tag.equals(OSMSettings.OSMTagKey.DESCRIPTION.getValue())) { // description = tag.value; } else { if (tag.getKey().length() > 0) { node.putTag(tag.getKey(), tag.getValue()); } else { node.removeTag(tag.getKey()); } } } commitNode( action, node, mOpenstreetmapUtil.getEntityInfo(), "", false, // closeChange.isSelected(), new Runnable() { @Override public void run() { OsmEditingPlugin plugin = OsmandPlugin.getPlugin(OsmEditingPlugin.class); if (plugin != null) { List<OpenstreetmapPoint> points = plugin.getDBPOI().getOpenstreetmapPoints(); OsmPoint point = points.get(points.size() - 1); if (getActivity() instanceof MapActivity) { MapActivity mapActivity = (MapActivity) getActivity(); mapActivity .getContextMenu() .showOrUpdate( new LatLon(point.getLatitude(), point.getLongitude()), plugin.getOsmEditsLayer(mapActivity).getObjectName(point), point); } } if (getActivity() instanceof MapActivity) { ((MapActivity) getActivity()).getMapView().refreshMap(true); } dismiss(); } }, getActivity(), mOpenstreetmapUtil); }