特定のレコードの位置データがない場合にエラー メッセージを表示する画面オーバーレイを生成する KML を生成します。動作すると、次のようになります。
firefox と chrome の 1 つの (一貫したシナリオ) では、代わりにこれを行います。
これが Firefox と Chrome の両方で機能する別のページとの違いは、マップ コンテナー div が、機能していないページの左側に配置され ( を使用position: absolute;
)、次float: right;
のように設定されていることです。 .
この画像を配置する KML の関連セクションは次のとおりです。
<ScreenOverlay>
<Icon>
<href>http://SomeURL.com/image.png</href>
</Icon>
<overlayXY x="0.5" xunits="fraction" y="0.5" yunits="fraction" />
<screenXY x="0.5" xunits="fraction" y="0.5" yunits="fraction" />
<size x="0" xunits="pixels" y="0" yunits="pixels" />
</ScreenOverlay>
Google マップの設定/初期化:
function initialize() {
var latlng = new google.maps.LatLng(64, -117);
var settings = {
zoom: 4,
maxZoom: 10,
center: latlng,
mapTypeControl: true,
mapTypeControlOptions: { style: google.maps.MapTypeControlStyle.DROPDOWN_MENU },
navigationControl: true,
navigationControlOptions: { style: google.maps.NavigationControlStyle.SMALL },
mapTypeId: google.maps.MapTypeId.SATELLITE
};
var map = new google.maps.Map(document.getElementById("MapCanvas"), settings);
var geoLayer = new google.maps.KmlLayer('@Model.KMLURL');
geoLayer.setMap(map);
}
これが機能するページの div:
div#MapCanvas {
float: right;
border: 2px solid #666666;
width: 400px;
height: 300px;
-moz-border-radius: 5px;
border-radius: 5px;
}
div#MapContainer {
float: right;
width: 400px;
height: 300px;
margin-bottom: 10px;
}
動作しないページ上の div:
div#MapCanvas {
border: 2px solid #666666;
width: 400px;
height: 300px;
-moz-border-radius: 5px;
border-radius: 5px;
}
div#MapContainer {
position: absolute;
top: 0;
left: 0;
width: 400px;
height: 300px;
padding: 5px;
}
私の推測では、これは、ページの読み込み時に div がどのように移動するかに関係しており、画像の配置と何らかの形で相互作用しているということです。私は次のことを試しました:
- CSS の代替配置コードなので、マップを別の場所に移動しても効果はありません。このページでは画像がまだオフセットされているため、軌道から外れている可能性があります。
- ページがロードされたら、JavaScript 呼び出しを使用して KML レイヤーを手動でアンロードおよび再ロードします。