Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript setIcon被称为google maps后无法设置Visible_Javascript_Google Maps - Fatal编程技术网

Javascript setIcon被称为google maps后无法设置Visible

Javascript setIcon被称为google maps后无法设置Visible,javascript,google-maps,Javascript,Google Maps,我有两种侦听器方法:“缩放变换器”和“显示视口” 1) 缩放更改器侦听“缩放更改”事件,并根据缩放级别设置图标大小 2) show_viewport侦听“idle”事件并设置图标的可见性wrt地图的可见边界,因为我希望防止重载,并使平移和缩放更平滑 当我更改地图的缩放时出现问题。更改地图缩放后,“show_viewport”(显示视口)功能起作用,并在视口中隐藏一些图标,但当图标再次进入视口时无法设置为可见。当我禁用缩放变换器并使用具有原始大小的图标时,“显示视口”非常有效。提前谢谢 googl

我有两种侦听器方法:“缩放变换器”和“显示视口”

1) 缩放更改器侦听“缩放更改”事件,并根据缩放级别设置图标大小

2) show_viewport侦听“idle”事件并设置图标的可见性wrt地图的可见边界,因为我希望防止重载,并使平移和缩放更平滑

当我更改地图的缩放时出现问题。更改地图缩放后,“show_viewport”(显示视口)功能起作用,并在视口中隐藏一些图标,但当图标再次进入视口时无法设置为可见。当我禁用缩放变换器并使用具有原始大小的图标时,“显示视口”非常有效。提前谢谢

google.maps.event.addListener(map, 'zoom_changed', function () {
    var zoom = map.getZoom();
    var multiply;
    var zoom_pix = {3: 8, 2: 4, 1: 2, 0: 2}
    multiply = zoom_pix[Math.max(0, zoom - 17)]
    if (zoom != previous_zoom) {
        for (let i = 0; i < map.markers.length; i++) {

            map.markers[i].setIcon({
                url: String(map.markers[i].icon),
                scaledSize: new google.maps.Size(multiply * 8, multiply * 8)
            });

        }
        previous_zoom = zoom;
    }});};
google.maps.event.addListener(映射'zoom\u changed',函数(){
var zoom=map.getZoom();
var乘法;
var zoom_pix={3:8,2:4,1:2,0:2}
multiply=zoom_pix[数学最大值(0,zoom-17)]
如果(缩放!=上一次缩放){
for(设i=0;i

google.maps.event.addListener(映射'idle',函数(){
for(设i=0;i
您的问题是,
标记。图标(不总是)不是此行的
字符串

url: String(map.markers[i].icon),
(至少在我的测试用例中,它是一个
对象

相反,请执行以下操作(使用记录的方法和属性,而不是未记录的属性):

代码片段:

//以下示例创建复杂标记以指示附近的海滩
//悉尼,新南威尔士州,澳大利亚。请注意,锚定设置为(0,32)以对应
//到旗杆的底部。
函数initMap(){
const map=new google.maps.map(document.getElementById(“map”){
缩放:10,
中心:{
lat:-33.9,
液化天然气:151.2
},
});
设置标记(地图);
google.maps.event.addListener(映射'idle',函数(){
for(设i=0;i
/*始终明确设置贴图高度以定义div的大小
*包含映射的元素*/
#地图{
身高:100%;
}
/*可选:使示例页面填充窗口*/
html,
身体{
身高:100%;
保证金:0;
填充:0;
}

复杂标记图标

请提供一份能说明您的问题的报告,最好是一份自己在这个问题上的报告。对不起,这是我的第一个问题。在进一步的问题中,我将提供一些片段。谢谢你的建议,非常感谢。在我的例子中,我使用ImageMarker函数来使用图标url,因此我必须从对象“map.markers[I].getIcon()”和map.markers[I].getIcon().url中以字符串形式获取url,并且它有效。这是一个错误,修复了我的答案。
url: String(map.markers[i].icon),
url: map.markers[i].getIcon().url,