/// <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); } }