/// <summary> /// Called when the "Import" button is clicked /// </summary> private void OnWizardCreate() { GameObject parentGameObject = new GameObject(); parentGameObject.name = this.ParentName; try { FeatureCollection features = GeoJSONObject.Deserialize(this.GeoJSONSource.text); MapBounds bounds = features.bbox; bounds.ProjectToWebMercator(); bounds.SetScale(this.HorizontalScale); this.UpdateCameraParameters(bounds.Center.ToVector3(), this.HorizontalScale, this.VerticalScale); foreach (FeatureObject ftr in features.features) { MapFeature feature = new MapFeature(ftr.properties[this.ObjectIDFieldName]); List <Vertex> vertices = ftr.geometry.AllPositions().ConvertAll((v) => new Vertex(v.latitude, v.longitude, 0.0)); feature.SetAttributes(ftr.properties); feature.SetGeometry(EnumGeometryType.Polygon, vertices); if (feature.Geometry.IsEmpty) { continue; } feature.Geometry.ProjectToWebMercator(); feature.Geometry.SetScale(this.HorizontalScale); Vector3 cityOrigin = feature.Geometry.GetCentroid(); GameObject go = feature.ToGameObject(); go.transform.position = cityOrigin - bounds.Center.ToVector3(); go.transform.parent = parentGameObject.transform; Material material = new Material(Shader.Find("Standard")); material.color = Color.gray;// UnityEngine.Random.ColorHSV(); go.GetComponent <Renderer>().material = material; if (this.Extrude) { float height = feature.Attributes.Get <float>(this.ExtrudeField); if (height > 0) { height = height * this.ExtrudeFactor; MeshExtrusion.Extrude(go, height, this.InvertFaces); } } } } catch (Exception ex) { Debug.Log(ex); } }
/// <summary> /// Called when the "Import" button is clicked /// </summary> private void OnWizardCreate() { GameObject parentGameObject = new GameObject(); parentGameObject.name = this.ParentName; try { GMLReader gmlReader = new GMLReader(this.GMLSource.name /*RootElementName*/, this.GMLSource.text); MapBounds bounds = gmlReader.Bounds; // project geographic to web mercator... bounds.ProjectToWebMercator(); bounds.SetScale(this.HorizontalScale); this.UpdateCameraParameters(bounds.Center.ToVector3(), this.HorizontalScale, this.VerticalScale); foreach (MapFeature feature in gmlReader.Features) { if (feature.Geometry.IsEmpty) { continue; } // project geographic to web mercator... feature.Geometry.ProjectToWebMercator(); feature.Geometry.SetScale(this.HorizontalScale); // calculate object's centroid Vector3 cityOrigin = feature.Geometry.GetCentroid(); GameObject go = feature.ToGameObject(); go.transform.position = cityOrigin - bounds.Center.ToVector3(); go.transform.parent = parentGameObject.transform; Material material = new Material(Shader.Find("Standard")); material.color = UnityEngine.Random.ColorHSV(); go.GetComponent <Renderer>().material = material; //if (this.Extrude == true) //{ // // TODO: get extrusion values from a field.... // // TODO: use this.ExtrusionFactor // MeshExtrusion.Extrude(go, UnityEngine.Random.Range(1, 500), this.InvertFaces); //} } } catch (Exception ex) { Debug.Log(ex); } }