Necesito crear chinchetas para la siguiente entrada.
var Countries = ["Austria", "Brazil", "India", "Germany", "USA", "Malaysia"]; Microsoft.Maps.SpatialDataService.GeoDataAPIManager.getBoundary(Countries, geoDataRequestOptions, map, (data) => { var value = data.location; if (data.results.length > 0 && data.results[0].Polygons !== null) { var polygons = data.results[0].Polygons; var dataBounds = Microsoft.Maps.LocationRect.fromShapes(data.results[0].Polygons); var loc = new Microsoft.Maps.Location(dataBounds.center.latitude, dataBounds.center.longitude); var pin = new Microsoft.Maps.Pushpin(loc, { icon: svgIcon, anchor: new Microsoft.Maps.Point(20 / 2, 20 / 2) }); map.entities.push(pin); locs.push(pin); map.setView({ bounds: Microsoft.Maps.LocationRect.fromLocations(locs), padding: 80 }); } }); }, 3000); Estoy usando GeoDataAPIManager para obtener los polígonos de límite y obtener el centro del polígono para generar un marcador. Pero al cargar países como Malasia o EE. UU., las chinchetas se colocan en el mar, ya que getboundary() devuelve varios polígonos y obtener el centro del polígono devuelve el centro entre los dos límites, lo que da como resultado que la chincheta se coloque en el mar.
Avíseme si hay alguna forma alternativa de crear la chincheta o de obtener el centro del polígono.
Ya probé el módulo spatial.Math para obtener el centro.
Esta es una ocurrencia común cuando se trabaja con polígonos, ya que su forma puede ser tal que su centro no esté dentro de la geometría real. Hay varias maneras diferentes de hacer esto.
Método 1: este método recurrirá al punto más cercano al centro calculado que está en el borde del polígono.
Método 2: enfócate solo en el polígono más grande.
Método 3: Intente calcular un centro visual utilizando una biblioteca externa.