我在设置标记位置和地图中心时出现问题,“属性值无效”错误或“属性值无效”错误如下:
错误:属性值无效:(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包含: 地图的var mapNwf 标记的var markerMe 由cgi(nwfSetInfo.cgi)提供的iframe(id:“myInfoIframe”)
“myInfoIframe”iframe cgi包含:
对顶级HTML中定义的函数“move_it()
”的调用
此调用旨在将标记(markerMe)移动到特定位置
并将地图(mapNwf)中心设置为相同的特定位置
“move_it
”的调用执行正常,直到它尝试执行:
mrk.setPosition(pos);
或
mp.setCenter(pos);
我在这里遇到了“属性值无效...”错误。 紧接着的执行是:
alert('mp = [' + mp.getCenter() + ']'); and
alert('mrk = [' + mrk.getPosition() + ']');
没有显示正确的位置(lat / lng)值(地图中心和标记位置)
问题是,getCenter
和getPosition
如何适用于相同的地图和标记变量,但setCenter
和setPosition
失败了?
如果getCenter
和getPosition
返回正确的数据,则表明没有可变的上下文问题,对吧?
但是,为什么我只能“阅读”而不是通过这些变量“设置”这些值?
是否与谷歌线的外观有关: 在顶部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>
答案 0 :(得分: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);
不知道为什么,但显然通过减少调用上下文级别的东西得到纠正的原始“可读但不写地图变量”的问题。如果有任何人有一个很好的解释,想听听它。感谢。