2

我有自定义代码来在谷歌地图上创建附近的地点搜索。每种搜索类型都会创建一个新图层,在选择不同的搜索类型时将其删除,我的问题是,即使他的图层已被删除,在泰国我们有“谷歌合作伙伴广告”显示取决于搜索类型,而这个“图层”没有得到已删除,但在创建新搜索图层时添加。

这是我用来创建搜索的代码(部分):创建图层(谷歌):

<div id="map_layers_google">
    <input type="checkbox" name="map_google" id="map_google_restaurant" class="box" onclick="Propertywise.Maps.getDataWithinBounds('google_restaurant');" value="google_restaurant">
</div>

getDataWithinBounds: function(layer_name, except_this_area) {
    if (!Propertywise.Design.is_ie8_or_less) {
        this.layers_on_map[layer_name] = true;
            this.getEntitiesWithinBounds(layer_name);
}

getEntitiesWithinBounds: function(entity_name) {
    var $this = this;
    if (!this.getBounds()) {
        setTimeout(function() {
            $this.getEntitiesWithinBounds(entity_name);
        }, 20);
    } else {
        var layer_name, category;
        var $this_input_el = jQuery("#map_" + entity_name);
        jQuery("#map_updating").fadeIn('fast');
        if (entity_name.indexOf('google') != -1) {
            layer_name = "google";
            category = entity_name.replace("google_", "");
        } else if (entity_name.indexOf('school') != -1) {
            layer_name = "schools";
            category = entity_name.replace("schools_", "");
        } else if (entity_name.indexOf('events') != -1) {
            layer_name = "events";
            category = entity_name.replace("events_", "");
        } else {
            layer_name = "transport";
            this.toggleTransitLayer();
        }
        jQuery("#map_layers_" + layer_name + " input").each(function(index, value) {
            var el_id = jQuery(this).attr("id");
            var el_entity_name = el_id.replace("map_", "");
            Propertywise.Maps.layers_on_map[el_entity_name] = false;
            if (jQuery(this).is(":checked") && el_entity_name != entity_name) {
                jQuery(this).attr("checked", false);
            }
            if (jQuery(this).is(":checked") && el_entity_name == entity_name) {
                Propertywise.Maps.layers_on_map[entity_name] = true;
            }
        });
        if (jQuery("#map_" + entity_name).is(':checked') || Propertywise.this_page == "school") {
            if (layer_name == "google") {
                infoWindow = new google.maps.InfoWindow();
                Propertywise.Maps.removeMarkers(layer_name);
                var request = {
                    bounds: Propertywise.Maps.map.getBounds(),
                    types: [category]
                };
                service = new google.maps.places.PlacesService(Propertywise.Maps.map);
                service.radarSearch(request, function(results, status) {
                    jQuery("#map_updating").fadeOut('fast');
                    if (status != google.maps.places.PlacesServiceStatus.OK) {
                        return;
                    }
                    for (var i = 0, result; result = results[i]; i++) {
                        Propertywise.Maps.createMarker(result.geometry.location.lat(), result.geometry.location.lng(), {
                            place: result,
                            type: category
                        });
                    }
                });
            }
        } else {
            this.removeMarkers(layer_name);
            jQuery("#map_updating").fadeOut('fast');
        }
    }
}

这是设置和删除每一层:

setUpLayers: function() {
    var $this = this;
    jQuery.each(this.layers, function(layer_name, value) {
        Propertywise.Ajax.requests[layer_name] = [];
        $this.layers[layer_name] = [];
    });
},
removeMarkers: function(layer_name) {
    if (Propertywise.Maps.map) {
        var layer = this.layers[layer_name];
        for (var i = 0; i < layer.length; i++) {
            layer[i].setMap(null);
        }
        layer = [];
    }
}

这是问题屏幕截图的链接。 截屏

问题是,任何人都可以帮助更改上述内容以删除完整层(不仅仅是标记层)或建议如何删除广告。我知道这是谷歌显示条款的一部分,但它不专业并且看起来很糟糕。

最好的

玛丽莎

4

0 回答 0