Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

239
Vistas
google maps api convertir polígono a círculo

Tengo un geoJson para un polígono que representa un círculo y necesito dibujar un círculo a partir de la geometría del polígono.

Obtengo el geoJson de una base de datos y puedo dibujar el polígono, pero si el geoJson se hizo a partir de un círculo, necesito dibujar un círculo en lugar de un polígono.

Actualización: encontré una forma de calcular el radio, ahora solo necesito una forma de calcular la coordenada para el centro.

 var geometry = JSON.parse(retZones["GeoJSON"]); var data = { type: "Feature", geometry }; var geoJsonLayer = new google.maps.Data(); var newFeature = geoJsonLayer.addGeoJson(data); var newGeometry = newFeature[0].getGeometry(); // If the geoJson represents a polygon (I get this info from DB) I draw the polygon if (retZones["TypeGeometry"] == "Polygon") { var shape = []; for (var i = 0; i < newGeometry.getLength(); i++) { var shapeData = newGeometry.getAt(i).getArray(); shape.push(shapeData); } var newShape = new google.maps.Polygon({ paths: shape, fillColor: '#ffff00', fillOpacity: 0.4, strokeWeight: 2, clickable: true, zIndex: 1, editable: false }); } // If the geoJson represents a circle I have to draw a circle else if (retZones["TypeGeometry"] == "Circle") { var p1 = { lat: newGeometry.getAt(0).getArray()[0].lat(), lng: newGeometry.getAt(0).getArray()[0].lng() }; var p2 = { lat: newGeometry.getAt(0).getArray()[180].lat(), lng: newGeometry.getAt(0).getArray()[180].lng() }; var c = ; // How to compute the center? var r = google.maps.geometry.spherical.computeDistanceBetween(p1, p2) / 2; var newShape = google.maps.Circle({ center: c, radius: r, fillColor: '#ffff00', fillOpacity: 0.4, strokeWeight: 2, clickable: true, zIndex: 1, editable: false }); }
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Descubrí esta solución y parece funcionar. Si alguien tiene una mejor manera por favor hágamelo saber.

 var ns = newGeometry.getAt(0).getArray().length; var N = 0; var E = Math.round(ns / 4); var S = E * 2; var W = E * 3; var p1 = { lat: newGeometry.getAt(0).getArray()[N].lat(), lng: newGeometry.getAt(0).getArray()[N].lng() }; var p2 = { lat: newGeometry.getAt(0).getArray()[S].lat(), lng: newGeometry.getAt(0).getArray()[S].lng() }; var p3 = { lat: newGeometry.getAt(0).getArray()[E].lat(), lng: newGeometry.getAt(0).getArray()[E].lng() }; var p4 = { lat: newGeometry.getAt(0).getArray()[W].lat(), lng: newGeometry.getAt(0).getArray()[W].lng() }; var c = { lat: p2.lat - ((p2.lat - p1.lat) / 2) , lng: p4.lng - ((p4.lng - p3.lng) / 2) }; var r = google.maps.geometry.spherical.computeDistanceBetween(p1, p2) / 2;
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda