У меня следующие координаты: 103.84958233542338,1.3669641300494784

Я не могу сказать, находится ли он в правильном формате координат для Цезия. Это дает мне ошибку разработчика "Требуется декартова система". У меня тоже есть следующие коды.

  var storecoord=[103.84958233542338,1.3669641300494784];
  var splitcoord = storecoord.split(',');
  var pos = Cesium.Cartesian3.fromDegrees(splitcoord[0],splitcoord[1]);
  var carto  = Cesium.Ellipsoid.WGS84.cartesianToCartographic(pos);
  var lon = Cesium.Math.toDegrees(carto.longitude);
  var lat = Cesium.Math.toDegrees(carto.latitude);

Любая идея по какой-либо части, когда это неправильно. Я хотел бы использовать переменную lon & lat для создания рекламного щита.

1
ywologist2 24 Май 2020 в 19:45

1 ответ

Лучший ответ

Убедитесь, что вы указали долготу, лат в правильном порядке для fromDegrees.

Кроме того, вы не можете вызывать .split для массива, он уже разделен. И похоже, что вы конвертируете из долготы / широты в декартову3, а затем обратно в долготу / широту, это просто для проверки обратного хода?

Во всяком случае вот Демонстрация Sandcastle с рекламным щитом в вашем местоположении по долготе / широте:

var storecoord=[103.84958233542338,1.3669641300494784];

var viewer = new Cesium.Viewer("cesiumContainer");

var lon = storecoord[0];
var lat = storecoord[1];

viewer.entities.add({
  position: Cesium.Cartesian3.fromDegrees(lon, lat),
  billboard: {
    image: "../images/Cesium_Logo_overlay.png",
  },
});

viewer.zoomTo(viewer.entities);
1
emackey 27 Май 2020 в 01:51