Azure Карты - ограничивающий прямоугольник - PullRequest
0 голосов
/ 18 апреля 2020

Я использую Azure Карты и библиотеку атласа javascript: https://docs.microsoft.com/en-us/javascript/api/azure-maps-control/atlas?view=azure-maps-typescript-latest

Код ниже возвращает undefined, когда я получаю доступ к свойству bbox Полигон класс:

var hull = atlas.math.getConvexHull(positions);
var boundingBox = hull.bbox //returns undefined.

var polygon = new atlas.data.Polygon(positions);
var bBox = polygon.bbox //returns undefined even here. 

Код, который работает:

var boundingBox = atlas.data.BoundingBox.fromPositions(positions); //Works fine. 

Мне нужно рассчитать центроид из выпуклой оболочки, используя:

var centroid = atlas.data.BoundingBox.getCenter(hull.bbox)

Может кто-нибудь, пожалуйста, помогите меня. Благодаря.

1 Ответ

1 голос
/ 22 апреля 2020

Свойство bbox объекта определяется только в том случае, если оно было определено / рассчитано напрямую, часто оно заполняется в файлах Geo JSON и, таким образом, заполняется при считывании. По умолчанию карта не заполняет это поле, если оно еще не заполнен, так как это будет означать много ненужных вычислений в большинстве приложений.

Для вашего сценария вы должны сделать следующее:

var hull = atlas.math.getConvexHull(positions);
var boundingBox = atlas.data.BoundingBox.fromData(hull);
var centroid = atlas.data.BoundingBox.getCenter(boundingBox);

Вот аналогичный пример: https://azuremapscodesamples.azurewebsites.net/index.html?sample=Polygon%20labels%20-%20calculated

Если вы хотите разместить метка в центре многоугольника, вы также можете рассмотреть этот подход: https://azuremapscodesamples.azurewebsites.net/index.html?sample=Polygon%20labels%20-%20symbol%20layer

...