我在设置标记位置和地图中心时遇到问题,出现“属性值无效”错误或“属性值无效”错误,例如:
错误:属性值无效:(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()
" 一个 iframe (id: "mapIframe") 源自 cgi (nwfMap.cgi)
“mapIframe” iframe cgi 包含: 用于地图的 var mapNwf 用于标记的 var markerMe 来自 cgi (nwfSetInfo.cgi) 的 iframe (id: “myInfoIframe”)
“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() + ']');
可以显示正确的位置(纬度/经度)值(地图中心和标记位置)
所以问题是,如何为相同的地图和标记变量工作,但getCenter
和失败了?getPosition
setCenter
setPosition
如果getCenter
并getPosition
返回正确的数据,则表明不存在变量上下文问题,对吗?
但是为什么我只能通过这些变量“读取”而不是“设置”值呢?
是否与 google 行的外观有关:在顶部 HTML 中、在其 iframe 中以及在 iframe 的 iframe 中?重复和嵌套级别导致一些谷歌地图上下文问题导致我的问题?
非常感谢您的任何建议!以下是供您检查和调查的相关代码部分:
顶部 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>