Google地球区域无效

时间:2014-10-07 19:24:27

标签: angularjs directive google-earth-plugin

以下代码位于角度指令中:

      // -- Regions stuff
      var regions = {};
      regions.us = {};
      var lod = ge.createLod('');
      var ne = {n:37.3214096102,s:26.9898707181,e:-90.4503326416,w:-107.730612278};
      lod.set(128, -1, 0, 0);

      //107.730612278,26.9898707181 -90.4503326416,26.9898707181 -90.4503326416,37.3214096102 -107.730612278,37.3214096102
      var usNe = ge.createLatLonAltBox('');
      usNe.setAltBox(
        ne.n, // north
        ne.s, // south
        ne.e, // east
        ne.w, // west
        0, // rotation
        0, // min altitude
        0, // max altitude
        ge.ALTITUDE_RELATIVE_TO_GROUND // mode
        );

      regions.us.ne = ge.createRegion('');
      regions.us.ne.set(usNe, lod); // lat lon alt box, level of detail
      // --

      var icon = ge.createIcon('');
      var offIcon = ge.createIcon('');
      var style = ge.createStyle('');
      var offStyle = ge.createStyle('');

      icon.setHref(window.location.href + '/assets/images/lightbulb.png');
      offIcon.setHref(window.location.href + '/assets/images/lightbulb_off.png');
      style.getIconStyle().setIcon(icon);
      offStyle.getIconStyle().setIcon(offIcon);
      style.getIconStyle().setScale(1);
      offStyle.getIconStyle().setScale(1);
      icon.setViewRefreshMode(ge.VIEW_REFRESH_ON_REGION);
      offIcon.setViewRefreshMode(ge.VIEW_REFRESH_ON_REGION);
      icon.setW(16);
      icon.setH(16);
      offIcon.setW(16);
      offIcon.setH(16);

      scope.control.createPlacemark = function (lat, lng, sale, to) {
        to = to || 0;
        var placemark = ge.createPlacemark('');
        var point = ge.createPoint('');
        point.setLatitude(+lat);
        point.setLongitude(+lng);
        placemark.setGeometry(point);
        placemark.setStyleSelector(style);
        ge.getFeatures().appendChild(placemark);

        if (+lng <= ne.e && +lng >= ne.w && +lat >= ne.s && +lat <= ne.n) {
          placemark.setRegion(regions.us.ne);
          console.log('done!');
        }

        $timeout(function () {
          placemark.setStyleSelector(offStyle);
        }, to);
        return placemark;
      };

调用scope.control.createPlacemark时,它会创建地标,区域内的地标设置区域,但在缩放级别/可见性方面没有任何变化。我希望边界内的那些将出现在与其他地标不同的高度,但它们同时出现。关于什么可能导致这种行为的任何想法?好像地区根本不起作用。

1 个答案:

答案 0 :(得分:0)

事实证明,创建与我的区域相关联的文件夹解决了我的问题。我有很多地标,很难分辨哪个地方与该地区有关联,而上述代码只关联了其中一个地标(不确定这是否是预期的行为)。

结果代码类似于

var folder = ge.createFolder('');
folder.setRegion(region);
ge.getFeatures().appendChild(folder);

// Then later in the placemark creation method
folder.getFeatures().appendChild(placemark);