Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

238
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!