private void Start() { OnlineMaps api = OnlineMaps.instance; List <Vector2> line = new List <Vector2> { //Geographic coordinates new Vector2(3, 3), new Vector2(5, 3), new Vector2(4, 4), new Vector2(9.3f, 6.5f) }; List <Vector2> poly = new List <Vector2> { //Geographic coordinates new Vector2(0, 0), new Vector2(1, 0), new Vector2(2, 2), new Vector2(0, 1) }; // Draw line api.AddDrawingElement(new OnlineMapsDrawingLine(line, Color.green, 5)); // Draw filled transparent poly api.AddDrawingElement(new OnlineMapsDrawingPoly(poly, Color.red, 1, new Color(1, 1, 1, 0.5f))); // Draw filled rectangle // (position, size, borderColor, borderWeight, backgroundColor) api.AddDrawingElement(new OnlineMapsDrawingRect(new Vector2(2, 2), new Vector2(1, 1), Color.green, 1, Color.blue)); }
private void Update() { if (_borderWeight != borderWeight) { _borderWeight = borderWeight; if (polygon != null) { polygon.borderWeight = borderWeight; map.Redraw(); } } // Check the position of the markers. CheckMarkerPositions(); // If nothing happens, then return. if (!changed) { return; } changed = false; // If the number of points is less than 3, then return. if (markers.Count < 3) { map.Redraw(); return; } // If the polygon is not created, then create. if (polygon == null) { // For points, reference to markerPositions. // If you change the values in markerPositions, value in the polygon will be adjusted automatically. polygon = new OnlineMapsDrawingPoly(markerPositions, Color.black, borderWeight, new Color(1, 1, 1, 0.3f)); // Add an element to the map. map.AddDrawingElement(polygon); } // Calculates area of the polygon. // Important: this algorithm works correctly only if the lines do not intersect. float area = 0; // Triangulate points. int[] indexes = OnlineMapsUtils.Triangulate(markerPositions).ToArray(); // Calculate the area of each triangle. for (int i = 0; i < indexes.Length / 3; i++) { // Get the points of the triangle. Vector2 p1 = markerPositions[indexes[i * 3]]; Vector2 p2 = markerPositions[indexes[i * 3 + 1]]; Vector2 p3 = markerPositions[indexes[i * 3 + 2]]; // Calculate the distance between points. float d1 = OnlineMapsUtils.DistanceBetweenPoints(p1, p2).magnitude; float d2 = OnlineMapsUtils.DistanceBetweenPoints(p2, p3).magnitude; float d3 = OnlineMapsUtils.DistanceBetweenPoints(p3, p1).magnitude; // Calculate the area. float p = (d1 + d2 + d3) / 2; area += Mathf.Sqrt(p * (p - d1) * (p - d2) * (p - d2)); } Debug.Log("Area: " + area + " km^2"); map.Redraw(); }