0

次のような「プロパティの値が無効です」エラーまたは「プロパティの値が無効です」エラーで、マーカーの位置と地図の中心の設定に問題があります。

エラー: プロパティの無効な値: (13.7323691218542、100.64347976627096) ソース ファイル: http://maps.gstatic.com/intl/en_us/mapfiles/api-3/13/5/main.js行: 26

これは、Firefox と Chrome でのテストに基づいています。

トップ HTML の内容: Javascript 関数 " move_it()" cgi (nwfMap.cgi) をソースとする iframe (id: "mapIframe")

また、「mapIframe」iframe cgi には以下が含まれます。

また、「myInfoIframe」iframe cgi には以下が含まれます。move_it()トップ HTML で定義された関数「 」の呼び出し この呼び出しは、マーカー (markerMe) を特定の場所に移動し、地図 (mapNwf) の中心を同じ特定の場所に設定することを目的としています。

" " の呼び出しは、move_it実行しようとするまで正常に実行されました: mrk.setPosition(pos);または

mp.setCenter(pos);

ここで、「プロパティの値が無効です...」というエラーが発生しました。直前の実行は次のとおりです。

alert('mp = [' + mp.getCenter() + ']'); and
alert('mrk = [' + mrk.getPosition() + ']');

正しい位置 (緯度/経度) の値が表示されていれば問題ありません (地図の中心とマーカーの位置)

問題は、同じマップ変数とマーカー変数に対してどのように機能したのに、getCenterandが失敗したのかということです。getPositionsetCentersetPosition

getCenterとが正しいデータで戻ってきた場合getPosition、それは変数コンテキストの問題がないことを示していますよね?

しかし、なぜこれらの変数を介して値を「読み取る」ことしかできず、「設定」することはできないのでしょうか?

それは Google 行の外観に関連していますか: 上部の HTML、その iframe、および iframe の iframe でしょうか? 繰り返しとネストされたレベルにより、Googleマップのコンテキストの問題が発生し、問題が発生しますか?

アドバイスをよろしくお願いします!以下は、調査と調査に関連するコード部分です。

トップ HTML の関連部分

<html>
........
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false">    </script>
<script language="JavaScript">
function move_it(slat, slng) {
    var ifrm = document.getElementById('mapIframe');
    var mp = ifrm.contentWindow.mapNwf;
    var mrk = ifrm.contentWindow.markerMe;
    var pos = new google.maps.LatLng(slat,slng);
    alert('mp = [' + mp.getCenter() + ']');
    alert('mrk = [' + mrk.getPosition() + ']');
    alert('pos = [' + pos + ']');
    mrk.setPosition(pos);
    mp.setCenter(pos);
}
</script>
.........
<div id="nwfMap">
<iframe width=100% height=520 frameBorder=0 src="nwfMap.cgi" name="mapIframe"    id="mapIframe" scrolling=no></iframe>
</div>
........
</html>

「mapIframe」iframe の関連部分 (nwfMap.cgi で作成)

<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>
<script type="text/javascript">
var mapNwf = new google.maps.Map(document.getElementById('mapCanvas'), {
    zoom: 8,
    mapTypeId: google.maps.MapTypeId.HYBRID
});
var latLngPre = new google.maps.LatLng(0.0, 0.0);
var markerMe = new google.maps.Marker({
    position: latLngPre,
    title: 'Me Here',
    map: mapNwf,
    draggable: true,
    animation: google.maps.Animation.DROP
  });
.........
</script>
.........
<div id="myInfoForm" style="display: none;">
<iframe border=1 width=100% height=200 align=center marginwidth=0 marginheight=0 seamless=seamless frameBorder=0 src="nwfSetInfo.cgi" name="myInfoIframe" id="myInfoIframe" scrolling=no></iframe>
</div>
.........

「myInfoIframe」iframe の関連部分 (nwfSetInfo.cgi によって生成)

<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false">       </script>
<script type="text/javascript">
   parent.parent.move_it(13.7323691218542, 100.643479766271);
</script>
4

1 に答える 1

0

この問題は、「move_it()」関数定義を最上位の HTML から中間レベルの iframe「mapIframe」に移動し、「myInfoIframe」iframe での「move_it()」呼び出しを変更することで修正されました。

parent.parent.move_it(13.7323691218542, 100.643479766271); 

parent.move_it(13.7323691218542, 100.643479766271);

理由はわかりませんが、呼び出しコンテキスト レベルを下げることで、元の「マップ変数を読み取ることはできますが、書き込むことはできません」という問題が修正されたことは明らかです。誰かが良い説明を持っているなら、それについて聞きたいです。ありがとう。

于 2013-06-29T09:19:43.983 に答える