0

次の方法でスタイルを作成して割り当てます (たとえば、C#)。

// ge — IGEPlugin instance
var placemark1 = ge.createPlacemark("placemark1");
var style1 = ge.createStyle("style1");
style1.getLineStyle().setWidth(2);
placemark1.setStyleSelector(style1);
// ... add placemark to ge features...

ID を持つ要素がGEstyle1に既に存在するかどうかを確認するにはどうすればよいですか? を呼び出すと、2 回目に呼び出すとエラーが発生します。ge.createPlacemark("placemark1")COM

要素を取得できませんge.getElementById("style1")— 常に null を返します。

4

1 に答える 1

0

いくつかあります。まずgetComputedStyle、オブジェクトのスタイル プロパティを KMLStyle オブジェクトとして取得できるようにするアクセサーがあります。

dynamic placemarkStyle = placemark1.getComputedStyle();
string id = placemarkStyle.getId();

おそらく、このメソッドを使用して、必要に応じてスタイル オブジェクトを参照できます...

型名を文字列として に渡すことで、特定の型のすべての要素の配列を取得することもできますgetElementsByType。このようなものは動作するはずです(テストされていませんが...)

public bool DoesStyleExist(string id)
{
  var styles = ge.getElementsByType('style');
  int l = styles.getLength();

  if(l == 0) 
  {
    // no styles
    return false;
  }

  for (var i = 0; i < l; ++i) {
    var style = style.item(i);
    var styleid = style.getId();
    if(id == styleid)
    {
      // matching style id
      return true;
    }
  }

  // no match
  return false;
}

編集

あなたのコメントに基づいて、コードのどこかにエラーがあるはずです-私は以下をテストしましたが、期待どおりに動作します。

  // create the placemark
  placemark = ge.createPlacemark('pm1');
  var point = ge.createPoint('');
  point.setLatitude(37);
  point.setLongitude(-122);
  placemark.setGeometry(point);

  // add the placemark to the earth DOM
  ge.getFeatures().appendChild(placemark);

  var styleMap = ge.createStyleMap('');

  // Create normal style for style map
  var normalStyle = ge.createStyle('style1');
  var normalIcon = ge.createIcon('icon1');
  normalIcon.setHref('http://maps.google.com/mapfiles/kml/shapes/triangle.png');
  normalStyle.getIconStyle().setIcon(normalIcon);

  // Create highlight style for style map
  var highlightStyle = ge.createStyle('style2');
  var highlightIcon = ge.createIcon('icon2');
  highlightIcon.setHref('http://maps.google.com/mapfiles/kml/shapes/square.png');
  highlightStyle.getIconStyle().setIcon(highlightIcon);

  styleMap.setNormalStyle(normalStyle);
  styleMap.setHighlightStyle(highlightStyle);

  // Apply stylemap to a placemark
  placemark.setStyleSelector(styleMap);

  alert(ge.getElementById('pm1')); // object 
  alert(ge.getElementById('style1')); // object 
  alert(ge.getElementById('style2')); // object

  DoesStyleExist('style1'); // true
  DoesStyleExist('style2'); // true
  DoesStyleExist('foo'); // false
于 2012-08-08T21:09:38.813 に答える