【发布时间】:2015-04-05 02:16:02
【问题描述】:
我在尝试修复 Google Maps API for javascript 上的垂直条带问题时遇到问题。
事实上,我只能访问由 CRM 自动加载的 jQuery。
事实上,我需要为我的 Map div (#map-canvas) 中的所有 img 标签将 max-width 属性设置为 none。
如果我直接从 Firefox 工具编辑 HTML 代码,这可以工作,但我找不到自动完成此操作的方法。
我可以访问的代码如下所示:
var mymap;
jQuery.Class("MapView",{
initialize:function(){
var mapOptions = {
center: { lat: 45.447541, lng: 11.7451883},
zoom: 14
};
return new google.maps.Map(document.getElementById('map-canvas'),mapOptions);
}
},{});
jQuery(document).ready(function(){
mymap = MapView.initialize();
});
$(window).bind("load", function() {
$('#map-canvas').find('img').css('max-width: none');
$("#map-canvas").hide().fadeIn('fast');
});
我尝试了一堆其他在线教程,但我无法解决这个问题。
有没有人知道如何让我摆脱困境?
谢谢, 里卡多
编辑: 所以,这是我到目前为止的完整代码:
var mymap;
var mymap_markers = [];
jQuery.Class("MapView",{
registerOnChangeEventOfSourceModule: function () {
jQuery('#sourceModule').on('change', function (e) {
jQuery('#picklistFields').find('option').remove().end().append('<option value="--">--</option>').val('--');
var element = jQuery(e.currentTarget);
var params = {};
var sourceModule = element.val();
params = {
'module': 'Map',
'action': "GetCVAjax",
'mode': "changeModule",
'sourceModule': sourceModule
};
AppConnector.request(params).then(
function (data) {
if (data) {
jQuery.each(data.result.options, function (i, item) {
var o = new Option(item, i);
jQuery(o).html(item);
jQuery("#picklistFields").append(o);
jQuery("#picklistFields").trigger('liszt:updated');
});
}
},
function (jqXHR, textStatus, errorThrown) {
alert(textStatus);
}
);
});
},
registerOnChangeEventOfCustomView: function () {
jQuery('#picklistFields').on('change', function (e) {
var element = jQuery(e.currentTarget);
var params = {};
var cvid = element.val();
var module = jQuery('#sourceModule').val();
params = {
'module': 'Map',
'action': "GetCVAjax",
'mode': "getMarkers",
'sourceModule': module,
'cvid': cvid
};
for (var i = 0; i < mymap_markers.length; i++) {
mymap_markers[i].setMap(mymap);
}
mymap_markers = [];
AppConnector.request(params).then(
function (data) {
if (data) {
jQuery.each(data.result, function (i, item) {
var myLatlng = new google.maps.LatLng(item['coords']['lat'],item['coords']['lng']);
var popupcontentCV = "<table class=\"table table-condensed table-striped table-bordered\"><tr><td colspan=\"2\"><strong>"+item['title']+"</strong></td></tr>";
jQuery.each(item['data'], function (label, value){
popupcontentCV += "<tr><td>"+app.vtranslate(label,module)+"</td><td>"+value+"</td></tr>";
});
popupcontentCV += "</table>";
var infowindow = new google.maps.InfoWindow({
content: popupcontentCV,
maxWidth: 315,
maxHeight: 550
});
var marker = new google.maps.Marker({
position: myLatlng,
map: mymap,
title: item['data']['title']
});
mymap_markers.push(marker);
google.maps.event.addListener(marker, 'click', function() {
infowindow.open(mymap,marker);
});
});
}
},
function (jqXHR, textStatus, errorThrown) {
alert(textStatus);
}
);
});
},
initialize:function(){
var mapOptions = {
center: { lat: 45.447541, lng: 11.7451883},
zoom: 14
};
return new google.maps.Map(document.getElementById('map-canvas'),mapOptions);
}
},{});
jQuery(document).ready(function(){
mymap = MapView.initialize();
MapView.registerOnChangeEventOfSourceModule();
MapView.registerOnChangeEventOfCustomView();
});
google.maps.event.addListener(mymap, 'idle', function () {
$('#map-canvas img').css('max-width', 'none');
});
/*
$(window).bind("load", function() {
$('#map-canvas').find('img').css('max-width: none');
$("#map-canvas").hide().fadeIn('fast');
});*/
【问题讨论】:
-
请问垂直带问题是什么?没有理由覆盖地图 CSS。
-
@MrUpsidown,很多地方都报告了这个问题,比如这里:stackoverflow.com/questions/17050808/…。我必须覆盖地图 CSS,因为正如我所说,我无权访问 CRM 的任何其他部分,而且我知道某处属性“max-width: 95%”适用于所有 img 元素(因此,也到地图上),导致问题。
-
那么您尝试了哪些 CSS 规则?
#map-canvas img { max-width: none; }? -
@MrUpsidown,我试着像 sn-p 中的最后一个函数一样。对于 map-canvas div 下的所有 img 实体,我需要将 max-width 设置为 none。可悲的是,如果我愿意,这些样式似乎不适用。全局设置也不起作用。这有点像我的操作后 img 样式被覆盖了。顺便说一句, $('#map-canvas').find('img') 返回了很多 img 实体,所以当我执行 .css(...) 时它们已经存在了
-
没有看到您的编辑。是的,我试过了。
标签: javascript jquery css google-maps-api-3