Explorar el Código

编辑问题修复,icontext图标按照分类显示

HuangKai hace 3 meses
padre
commit
a82094d945
Se han modificado 4 ficheros con 85 adiciones y 10 borrados
  1. 15 0
      src/ctrl/VectorDataManager.js
  2. 1 1
      src/view/Map.js
  3. 1 1
      src/view/layers/Editable.js
  4. 68 8
      src/view/layers/Styled.js

+ 15 - 0
src/ctrl/VectorDataManager.js

@@ -1215,6 +1215,7 @@ class VectorDataManager extends HistorizedManager {
 	setGeoJsonData(data){
 		this._cacheOsmGeojson = data;
 		this._nextId = this._cacheOsmGeojson.features.length + 1;
+		this._resortGeojsonID();
 		// this._do(new Action(Action.IMPORT, null, arguments));
 	}
 
@@ -1235,9 +1236,23 @@ class VectorDataManager extends HistorizedManager {
 
 		// console.log("Processed in", Date.now() - startTs, "ms", this._cacheOsmGeojson);
 		// console.log(this._cacheOsmXml);
+
+		this._resortGeojsonID();
+
 		return this._cacheOsmGeojson;//result;
 	}
 
+	_resortGeojsonID(){
+		let count = 0;
+		this._cacheOsmGeojson.features.map(f => {
+			let si = f.id.split("/");
+			// console.log(si); 
+			f.id = `${si[0]}/${count}`
+			count++;
+			return f;
+		});
+	}
+
 	/**
 	 * Creates a new OSM changeset, and uploads to OSM API user edits.
 	 * @param {Object} tags Tags to apply on changeset

+ 1 - 1
src/view/Map.js

@@ -428,7 +428,7 @@ class MyMap extends Component {
 					/>
 				}
 
-				{!this.state.loading && this.state.dataready && this.props.mode === Body.MODE_EXPLORE &&
+				{this.props.mode === Body.MODE_EXPLORE &&
 					<MoveableObject
 						styler={this.mapStyler}
 						level={this.props.level}

+ 1 - 1
src/view/layers/Editable.js

@@ -156,7 +156,7 @@ class EditableLayer extends Path {
 
 			if(previous || next){
 				let geometry;
-				if(e.layer.feature.geometry.type === "Polygon"){
+				if(e.layer.feature.geometry.type === "Polygon" || e.layer.feature.geometry.type === "MultiPolygon"){
 					geometry = L.polygon(e.vertex.latlngs);
 				} else if(e.layer.feature.geometry.type === "LineString"){
 					geometry = L.polyline(e.vertex.latlngs);

+ 68 - 8
src/view/layers/Styled.js

@@ -220,7 +220,6 @@ class StyledLayer extends Path {
 				&& l.feature.properties.tags 
 				&& l.feature.properties.tags.show_type !== "none"
 				&& (l.feature.properties.tags.name !== "" && l.feature.properties.tags.name !== "卫生间") 
-				&& l.feature.properties.tags.area_type !== "7" 
 				&& l.feature.geometry 
 				&& l.feature.geometry.type 
 				&& (l.feature.geometry.type === "MultiPolygon" || l.feature.geometry.type === "Polygon")
@@ -232,7 +231,10 @@ class StyledLayer extends Path {
 			const coords = l.getLatLng ? l.getLatLng() : (l.getBounds ? l.getBounds().getCenter() : null);
 
 			if(coords) {
-				let div = this._createNameMarkerByType(l.feature.properties.tags.name, l.feature.properties.tags.show_type);
+				let name = l.feature.properties.tags.name;
+				let type = l.feature.properties.tags.show_type;
+				let two = l.feature.properties.tags.two_class;
+				let div = this._createNameMarkerByType(name, type, two);
 				let icon = new DivIcon({
 					iconSize: [textWidth, textHeight],
 					html: div,
@@ -274,26 +276,84 @@ class StyledLayer extends Path {
 	 * Name marker create by type
 	 * @private
 	 */
-	_createNameMarkerByType(name, type)
+	_createNameMarkerByType(name, type, two)
 	{
-		let src;
 		switch (type) {
 			case "none":
 				return null;
 			case "text":
 				return this._createDivIcon(name);
 			case "icon_text":
-				src = window.EDITOR_URL + "img/icons/shop_music.png";
-				return this._createImageDivIcon(src, name, false);
+				return this._createImageDivIcon(this._getTextIconSrc(two), name, false);
 			case "icon_text_border":
-				src = window.EDITOR_URL + "img/icons/shop_music.png";
-				return this._createImageDivIcon(src, name);
+				return this._createImageDivIcon(this._getTextIconSrc(two), name);
 		
 			default:
 				return null;
 		}
 	}
 
+	/**
+	 * 
+	 * @private
+	 */
+	_getTextIconSrc(two){
+		let src = window.EDITOR_URL;
+		switch (two) {
+			//柜台
+			case "180101":
+			case "180102":
+			case "180109":
+				src += "img/icons/amenity_reception.png";
+				break;
+			//自助机,值机,销售终端
+			case "180104":
+			case "180105":
+			case "180108":
+				src += "img/icons/amenity_self_service_machine.png";
+				break;
+			//安检,海关,通道
+			case "180201":
+			case "180202":
+				src += "img/icons/amenity_safty_check.png";
+				break;
+			//登机口
+			case "180301":
+				src += "img/icons/amenity_leave.png";
+				break;
+			//到达口
+			case "180402":
+				src += "img/icons/amenity_arrive.png";
+				break;
+			//行李打包,寄存,托运
+			case "180501":
+			case "180503":
+			case "180505":
+				src += "img/icons/amenity_luggage.png";
+				break;
+			//行李提取
+			case "180502":
+				src += "img/icons/amenity_luggage_cart.png";
+				break;
+			//出入口
+			case "190206":
+				src += "img/icons/amenity_inout.png";
+				break;
+			//问讯,服务台
+			case "190401":
+			case "190402":
+				src += "img/icons/amenity_info.png";
+				break;
+
+			default:
+				break;
+		}
+		// console.log(src, two);
+
+		return src;
+	}
+	
+
 	/**
 	 * Create divIcon elememnt
 	 * @private