Geo: Array;
The Geo property determines an array of objects that bind geographic coordinates to topobase coordinates.
Property value is set from JSON and returned by the getGeo method. Property value cannot be set with the setGeo method.
The property contains an array of PP.MapGeoItem type objects.
To execute this example, the page must contain the MapChart component named map (see Map Layout on HTML Page). Find out geographic coordinates of the central point in the map layer area with the RU-PER identifier, using available geographic coordinates of the centers of RU-MOW and RU-SPE areas and topobase coordinates of the three regions:
/* Create an object for mapping geographic coordinates of the RU-MOW region center with the topobase coordinates */ var mowRect = map.getShape("RU-MOW").getBoundsRect(); var geoItem1 = new PP.MapGeoItem({ Latitude: 55.751667, // Latitude Longitude: 37.617778, // Longitude X: mowRect.getLeft() + mowRect.getWidth() / 2, // Topobase X coordinate Y: mowRect.getTop() + mowRect.getHeight() / 2, // Topobase Y coordinate Id: "RU-MOW" }); // Create an object of map topobase metadata var meta = new PP.MapTopobaseMeta({ // Array of objects of geographic coordinates mapping with topobase coordinates Geo: [geoItem1] }); /* Create and set the second object for mapping geographic coordinates of the region with the ID RU-SPE with topobase coordinates */ var speRect = map.getShape("RU-SPE").getBoundsRect(); var geoItem2 = new PP.MapGeoItem({ Latitude: 59.95, // Latitude Longitude: 30.316667, // Longitude X: speRect.getLeft() + speRect.getWidth() / 2, // Topobase X coordinate Y: speRect.getTop() + speRect.getHeight() / 2, // Topobase Y coordinate Id: "RU-SPE" }); meta.setGeoItem(geoItem2); // Determine center coordinates for the region with the ID RU-PER var perRect = map.getShape("RU-PER").getBoundsRect(); var center = new PP.Point({ X: perRect.getLeft() + perRect.getWidth() / 2, Y: perRect.getTop() + perRect.getHeight() / 2, }); // Determine coefficients of mapping geographic coordinates with topobase coordinates var yCoef = Math.abs((geoItem2.getLatitude() - geoItem1.getLatitude()) / (geoItem2.getY() - geoItem1.getY())); var xCoef = Math.abs((geoItem2.getLongitude() - geoItem1.getLongitude()) / (geoItem2.getX() - geoItem1.getX())); // Get geographic coordinates of the region with the ID RU-PER var perX = Math.abs(center.getX() - geoItem1.getX()) * xCoef + geoItem1.getLongitude(); var perY = Math.abs(center.getY() - geoItem1.getY()) * yCoef + geoItem1.getLatitude(); console.log("Latitude: " + perY + ", longitude: " + perX);
After executing the example the browser console displays geographic coordinates of the central point in the map layer area with the RU-PER identifier:
Latitude: 59.18602187765048, longitude: 56.32188852435074
See also: