Javascript 使用对象文字更新标记上的图标

Javascript 使用对象文字更新标记上的图标,javascript,google-maps,google-maps-api-3,Javascript,Google Maps,Google Maps Api 3,自从MarkerImage消失后,我经常会遇到更新标记图标的问题 首先调用Marker.setIcon({url:“icon url”,anchor:…})可以正常工作,但当我尝试使用相同的对象文本在同一标记上创建setIcon后,它会在调试器中引发此异常: <exception>: Af message: "not a string" name: "InvalidValueError" stack: "Error↵ at Error (native)↵ at new Af (htt

自从MarkerImage消失后,我经常会遇到更新标记图标的问题

首先调用Marker.setIcon({url:“icon url”,anchor:…})可以正常工作,但当我尝试使用相同的对象文本在同一标记上创建setIcon后,它会在调试器中引发此异常:

<exception>: Af
message: "not a string"
name: "InvalidValueError"
stack: "Error↵ at Error (native)↵ at new Af (http://maps.googleapis.com/maps-api-v3/api/js/21/10/intl/de_ALL/main.js:26:682)↵ at Bf (http://maps.googleapis.com/maps-api-v3/api/js/21/10/intl/de_ALL/main.js:26:795)↵ at http://maps.googleapis.com/maps-api-v3/api/js/21/10/intl/de_ALL/main.js:28:60↵ at http://maps.googleapis.com/maps-api-v3/api/js/21/10/intl/de_ALL/main.js:28:181↵ at http://maps.googleapis.com/maps-api-v3/api/js/21/10/intl/de_ALL/main.js:28:401↵ at Zh.setIcon (http://maps.googleapis.com/maps-api-v3/api/js/21/10/intl/de_ALL/main.js:31:1423)↵ at $setIcon_6 (0.js:59576:15)↵ at $update_10 (0.js:98065:3)↵ at $liveTimerFireEvent (0.js:113687:7)"
__proto__: c
c: Object
anchor: U
origin: U
size: W
url: "resources/image.png"
__proto__: Object
this: undefined
:Af
消息:“不是字符串”
名称:“InvalidValueError”
堆栈:“错误↵ 错误(本机)↵ 在新机场(http://maps.googleapis.com/maps-api-v3/api/js/21/10/intl/de_ALL/main.js:26:682)↵ 在高炉(http://maps.googleapis.com/maps-api-v3/api/js/21/10/intl/de_ALL/main.js:26:795)↵ 在http://maps.googleapis.com/maps-api-v3/api/js/21/10/intl/de_ALL/main.js:28:60↵ 在http://maps.googleapis.com/maps-api-v3/api/js/21/10/intl/de_ALL/main.js:28:181↵ 在http://maps.googleapis.com/maps-api-v3/api/js/21/10/intl/de_ALL/main.js:28:401↵ 在Zh.setIcon(http://maps.googleapis.com/maps-api-v3/api/js/21/10/intl/de_ALL/main.js:31:1423)↵ 在$setIcon_6(0.js:59576:15)↵ 在$update_10(0.js:98065:3)↵ 在$liveTimerFireEvent(0.js:113687:7)
__原型:c
c:反对
主持人:U
产地:美国
尺寸:W
url:“resources/image.png”
__原型:对象
这个:未定义
很明显,我使用的是21/10版 有人有类似的问题吗? 我很快用一个字符串而不是一个图标的对象来测试它,它是这样工作的

因为在我有机会说这不是简单的js之前,人们就投票否决了我的问题…这里是未摘录的示例

/*
*将map声明为全局变量
*/
var映射;
/*
*使用GoogleMapsAPI内置机制来附加dom事件
*/
google.maps.event.addDomListener(窗口,“加载”,函数(){
/*
*创建地图
*/
var map=new google.maps.map(document.getElementById(“map_div”){
中心:新google.maps.LatLng(33.808678,-117.918921),
缩放:14,
mapTypeId:google.maps.mapTypeId.ROADMAP
});
/*
*创建信息窗口(将由标记使用)
*/
var infoWindow=new google.maps.infoWindow();
/*
*marker creater函数(充当html参数的闭包)
*/
函数createMarker(选项,html){
var marker=新的google.maps.marker(选项);
如果(html){
google.maps.event.addListener(标记“单击”,函数(){
setContent(html);
infoWindow.open(options.map,this);
});
}
返回标记;
}
/*
*向地图添加标记
*/
var marker0=createMarker({
位置:新google.maps.LatLng(33.808678,-117.918921),
地图:地图,
图标:{url:http://1.bp.blogspot.com/_GZzKwf6g1o8/S6xwK6CSghI/AAAAAAAAA98/_iA3r4Ehclk/s1600/marker-green.png" }
},“标记0这是主标记。

”; var marker1=createMarker({ 位置:新google.maps.LatLng(33.818038,-117.928492), 地图:地图 },“标记1这是标记1

”; var marker2=createMarker({ 位置:新google.maps.LatLng(33.80333,-117.915278), 地图:地图 },“标记2这是标记2

”; setInterval(函数(){marker0.setIcon({url:)http://1.bp.blogspot.com/_GZzKwf6g1o8/S6xwK6CSghI/AAAAAAAAA98/_iA3r4Ehclk/s1600/marker-green.png“});警报(“调用”);},3000); });
而不是指定图标,如:

marker0.setIcon({ url :  "http://1.bp.blogspot.com/_GZzKwf6g1o8/S6xwK6CSghI/AAAAAAAAA98/_iA3r4Ehclk/s1600/marker-green.png" });
只需直接使用URL,而不是作为传递给setIcon的结构的属性。这对我来说很有效,但没有抛出错误:

marker0.setIcon("http://1.bp.blogspot.com/_GZzKwf6g1o8/S6xwK6CSghI/AAAAAAAAA98/_iA3r4Ehclk/s1600/marker-green.png");

而不是像以下那样指定图标:

marker0.setIcon({ url :  "http://1.bp.blogspot.com/_GZzKwf6g1o8/S6xwK6CSghI/AAAAAAAAA98/_iA3r4Ehclk/s1600/marker-green.png" });
只需直接使用URL,而不是作为传递给setIcon的结构的属性。这对我来说很有效,但没有抛出错误:

marker0.setIcon("http://1.bp.blogspot.com/_GZzKwf6g1o8/S6xwK6CSghI/AAAAAAAAA98/_iA3r4Ehclk/s1600/marker-green.png");

发布你的javascript代码来演示你在做什么好吧,我有点清楚问题是:其他人在用图标对象更新标记图标时有类似的问题吗?我无法发布代码,因为我使用了gwt包装器,它是一个非常庞大的应用程序的一部分。但问题是,在google将MarkerImage更改为图标(普通js对象)之前,代码工作得很好,现在它也可以工作,但并不像预期的那样100%。我在里面没做什么特别的事。正如我在“创建标记并尝试使用对象更新图标”一文中所说的,我现在还添加了一个生成相同异常的plan js代码……对我很有用:您的问题是在哪里创建
marker0
,还是在哪里用
marker0.setIcon
更新它?用chrome打开它,然后打开调试器并启用复选框“捕获异常时暂停”。当marker0.setIcon更新被调用时,将获得异常,chrome将暂停。在“Scope section”下,可以看到我发布的异常ubove。我刚刚尝试了你的代码,它使用setIcon({url:“green marker…”)运行得很好。我使用了v3.exp,嵌入式代码段运行程序也可以很好地工作。发布javascript代码,演示您正在做的事情。我有点清楚,问题是:其他人在用图标对象更新标记图标时是否也有类似问题?我无法发布代码,因为我使用了gwt包装器,它是一个非常庞大的应用程序的一部分。但问题是,在google将MarkerImage更改为图标(普通js对象)之前,代码工作得很好,现在它也可以工作,但并不像预期的那样100%。我在里面没做什么特别的事。正如我在“创建标记并尝试使用对象更新图标”一文中所说的,我现在还添加了一个生成相同异常的plan js代码……对我很有用:您的问题是在哪里创建
marker0
,还是在哪里用
marker0.setIcon
更新它?用chrome打开它,然后打开调试器并启用复选框“捕获异常时暂停”。当marker0.setIcon更新被调用时,将获得异常,chrome将暂停。在下面