0

setHtmlContent を使用して infoBox のコンテンツを設定します。ドキュメントによると、infoBox は最初は左上に固定されています。マップを少しでも移動すると、infoBox の位置がジャンプします。IE8 では問題ありませんが、FireFox と Chrome では問題ありません。

これを解決するためのアイデア/経験、または解決策はありますか?

情報ボックスは次のように追加されます (参考)...

var infoboxOptions = { width: 300, height: 150, htmlContent: html, showCloseButton: true, zIndex: 99, offset: new Microsoft.Maps.Point(0, 0), showPointer: true, visible: false };
var location = new Microsoft.Maps.Location(pinArray[i].DPLat, pinArray[i].DPLong)
infobox = new Microsoft.Maps.Infobox(location, infoboxOptions);

そして、マップにプッシュしました。

4

2 に答える 2

1

FFとChromeでも同じ問題が発生していました。私が使用した修正は、viewendchangeイベントをリッスンし、イベントがディスパッチされたときにインフォボックスの場所をリセットすることでした。これは、IE7、IE8、IE9、FF、Chrome、Safariで機能します。理想的ではありませんが、機能します。

function showInfoBox( event ) {
    var
        location = event.target.getLocation(), // event from pushpin click
        map = this.map, // my map reference
        _that = this
    ;

    // create the infobox
    var infoboxOptions = { width: 300, height: 150, htmlContent: html, showCloseButton: true, zIndex: 99, offset: new Microsoft.Maps.Point(0, 0), showPointer: true, visible: false };
    this._infoBox = new Microsoft.Maps.Infobox( location , infoboxOptions );
    map.entities.push( this._infoBox );

    // local function to reset our position
    function updateInfoboxLocation() {
        _that._infoBox.setLocation( location );
    }

    // reset only on new display of a box, this fixes the other issues of a user moving
    // the box and it being offset
    if( this._infoEventId ) Microsoft.Maps.Events.removeHandler( this._infoEventId );

    // listen for the end event, update location
    this._infoEventId = Microsoft.Maps.Events.addHandler(map, 'viewchangeend', updateInfoboxLocation);

    // center the view on the pin location
    map.setView( { center: location } );
}
于 2011-12-16T17:57:44.930 に答える
1

マップ上でインフォボックスをプッシュすると、そのオフセットがデフォルトのオフセットになっているようです。また、mapView が変更されると、正しいもの ( htmlContent が設定されている場合は (0,0) ) で更新されます。

于 2012-09-27T13:37:09.630 に答える