Google지도 v3에서 다각형의 중심을 얻는 방법은 무엇입니까?
100 % 정확할 필요는 없으며 경계 사각형의 중심이 될 수 있습니다.
연산:
다각형의 모든 점을 통과합니다. 모든 포인트를 찾으십시오.
x1
, 가장 낮은x
좌표y1
, 가장 낮은y
좌표x2
, 가장 높은x
좌표y2
, 가장 높은y
좌표
이제 경계 사각형이 있으며 다음을 사용하여 중심을 작업 할 수 있습니다.
center.x = x1 + ((x2 - x1) / 2);
center.y = y1 + ((y2 - y1) / 2);
Matthew의 대답 은 좋은 해결책입니다. 그러나 Google Maps API v3를 사용하는 LatLngBounds
경우 extend()
메서드를 통해 다각형의 각 지점을 개체 에 전달한 다음 마지막으로 개체 getCenter()
에 대한 메서드를 호출 할 수 LatLngBounds
있습니다. 다음 예를 고려하십시오.
var bounds = new google.maps.LatLngBounds();
var i;
// The Bermuda Triangle
var polygonCoords = [
new google.maps.LatLng(25.774252, -80.190262),
new google.maps.LatLng(18.466465, -66.118292),
new google.maps.LatLng(32.321384, -64.757370),
new google.maps.LatLng(25.774252, -80.190262)
];
for (i = 0; i < polygonCoords.length; i++) {
bounds.extend(polygonCoords[i]);
}
// The Center of the Bermuda Triangle - (25.3939245, -72.473816)
console.log(bounds.getCenter());
누락 된 함수의 고유 한 버전으로 Polygon 클래스를 확장 할 수 있습니다. my_getBounds ()라고 부르겠습니다.
google.maps.Polygon.prototype.my_getBounds=function(){
var bounds = new google.maps.LatLngBounds()
this.getPath().forEach(function(element,index){bounds.extend(element)})
return bounds
}
다음과 같은 코드에서 사용하는 것보다 :
myPolygon.my_getBounds().getCenter()
... 등, v2 동작과 동일해야합니다.
다음은 내가 작성한 사용자 지정 함수입니다. 자유롭게 사용하십시오.
function polygonCenter(poly) {
var latitudes = [];
var longitudes = [];
var vertices = poly.getPath();
// put all latitudes and longitudes in arrays
for (var i = 0; i < vertices.length; i++) {
longitudes.push(vertices.getAt(i).lng());
latitudes.push(vertices.getAt(i).lat());
}
// sort the arrays low to high
latitudes.sort();
longitudes.sort();
// get the min and max of each
var lowX = latitudes[0];
var highX = latitudes[latitudes.length - 1];
var lowy = longitudes[0];
var highy = longitudes[latitudes.length - 1];
// center of the polygon is the starting point plus the midpoint
var centerX = lowX + ((highX - lowX) / 2);
var centerY = lowy + ((highy - lowy) / 2);
return (new google.maps.LatLng(centerX, centerY));
}
오목한 다각형의 경우 경계 사각형의 중심이 완전히 다각형 외부에있을 수 있습니다. 다각형이 오목한 경우 가장 큰 내접원의 중심을 다각형의 "중심"으로 사용하는 것이 좋습니다. 여기에서 충분히 간단한 알고리즘을 볼 수 있습니다 (p. 4) . 작업이 다각형에 레이블을 배치하는 것이라면 이것은 또한 가장 미적으로 만족스러운 결과를 제공 할 것입니다 (이 경우 다각형이 오목하지 않더라도이 방법을 사용하는 것이 좋습니다).
참조 URL : https://stackoverflow.com/questions/3081021/how-to-get-the-center-of-a-polygon-in-google-maps-v3
'your programing' 카테고리의 다른 글
EditText를 만드는 방법은 Android에서만 알파벳을 허용합니까? (0) | 2020.12.31 |
---|---|
문자열의 문자 수를 제한하고 나머지는 잘라 내기 (0) | 2020.12.31 |
C # 안티 패턴 (0) | 2020.12.31 |
점이 선의 오른쪽인지 왼쪽인지 확인하는 방법 (0) | 2020.12.31 |
PHP에서 HTML / XML을 어떻게 구문 분석하고 처리합니까? (0) | 2020.12.31 |