ラベルを表示する

ソースコード

//YOLP操作のためのJavaScriptインターフェースオブジェクト
var YOLPSL;
//YOLP地図オブジェクト(Mapオブジェクト)
var ymap; 


///(カセットを含む)YOLPSLロード完了イベント
/// map:YOLP地図オブジェクト
/// cassettes:カセットオブジェクトのディクショナリ(キーはカセット名)
function onLoadComplete(map, cassettes) {
    ymap = map;
    var slPlugin = document.getElementById("slPlugin");
    if (!slPlugin || !slPlugin.Content) {
        return;
    }
    YOLPSL = slPlugin.Content.jsInterface;
    
    var SliderZoomControlHorizontal = YOLPSL.CreateInstance("SliderZoomControlHorizontal");
    ymap.AddControl(SliderZoomControlHorizontal);
    
    var LayerSetControl = YOLPSL.CreateInstance("LayerSetControl");
    ymap.AddControl(LayerSetControl);
    
    document.getElementById("addLabel").onclick       = addLabel;
    document.getElementById("addLabels").onclick      = addLabels100;
    document.getElementById("addCustomLabel").onclick = addCustomLabel;
    document.getElementById("rmvLabel").onclick       = removeLabel;
    document.getElementById("rmvLabels").onclick      = removeLabels100;
    document.getElementById("rmvCustomLabel").onclick = removeCustomLabel;
    
    
}


//1ラベル追加
var _label = null;
function addLabel() {
    if (_label != null) {
        return;
    }
    
    //ラベルオブジェクトを生成
    var ll = getRandomLL();
    _label = YOLPSL.CreateInstanceWithArgs("YLabel", ll, ll.ToString());
    ymap.AddFeature(_label);
    
}


//1ラベル削除
function removeLabel() {
    ymap.RemoveFeature(_label);
    _label = null;
}



//100ラベル追加
var _labelList = null;
function addLabels100() {
    if (_labelList != null) {
        return;
    }
    
    //リスト生成
    _labelList = YOLPSL.CreateList("Feature");
    for (var i=0; i<100; i++) {
        
        //ラベルオブジェクトを生成
        var ll = getRandomLL();
        var label = YOLPSL.CreateInstanceWithArgs("YLabel", ll, ll.ToString());
        _labelList.push(label);
    }
    
    ymap.AddFeatures(_labelList);
    
}


//100個削除
function removeLabels100() {
    if (_labelList == null) {
        return;
    }

    for (var i=0; i<_labelList.length; i++) {
        ymap.RemoveFeature(_labelList[i]);
    }
    
    _labelList = null;
}



//カスタムラベル追加
var _customLabel = null;
function addCustomLabel() {
    if (_customLabel != null) {
        return;
    }
    
    
    //ラベルオプション指定
    var foption = YOLPSL.CreateInstance("FeatureOption");
    
    //フォント形式指定
    foption.FontStyle = YOLPSL.CreateInstance("YStyle");
    foption.FontStyle.Weight = 20.0;
    foption.FontStyle.RGB = "#FFCCCC";
    
    //塗りつぶし形式指定
    foption.FillStyle = YOLPSL.CreateInstanceWithArgs("YStyle", "0xFF3399", 2, 0.7);
    
    var ll = getRandomLL();
    _customLabel = YOLPSL.CreateInstanceWithArgs("YLabel", ll, ll.ToString(), foption);
    ymap.AddFeature(_customLabel);
}


//カスタムラベル削除
function removeCustomLabel() {
    ymap.RemoveFeature(_customLabel);
    _customLabel = null;
    
}



//画面内のランダムな地理座標オブジェクトを取得
function getRandomLL() {
    
    var geoBox = ymap.GetBounds();
    var min = geoBox.GetSouthWest();
    var max = geoBox.GetNorthEast();
    var dx = max.Lon - min.Lon;
    var dy = max.Lat - min.Lat;
    
    var lat = min.Lat + dy * Math.random();
    var lon = min.Lon + dx * Math.random();
    
    var latlng = YOLPSL.CreateInstanceWithArgs("LatLng", lat, lon);
    return latlng;
    
}
Webサービス by Yahoo! JAPAN