我有一个奇怪的问题。我的网站上有两张地图,一张大地图和一张小地图。我想用大的一个来显示到某个地址的路线。我现在正在尝试实现这两张地图,但却遇到了一个奇怪的问题。小地图工作正常,但在大地图上只有div的一小块区域填充了地图,其余的都是空的。 (见图片。)
我使用以下代码显示两张地图:
function initialize() {
var latlng = new google.maps.LatLng(51.92475, 4.38206);
var myOptions = {zoom: 10, center: latlng,mapTypeId: google.maps.MapTypeId.ROADMAP};
var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
var marker = new google.maps.Marker({position: latlng, map:map, title:"Home"});
var image = '/Core/Images/Icons/citysquare.png';
var myLatLng = new google.maps.LatLng(51.92308, 4.47058);
var cityCentre = new google.maps.Marker({position:myLatLng, map:map, icon:image, title:"Centre"});
marker.setMap(map);
var largeLatlng = new google.maps.LatLng(51.92475, 4.38206);
var largeOptions = {zoom: 10, center: largeLatlng,mapTypeId: google.maps.MapTypeId.ROADMAP};
var largeMap = new google.maps.Map(document.getElementById("largeMap"), largeOptions);
var largeMarker = new google.maps.Marker({position: largeLatlng, map:largeMap, title:"Cherrytrees"});
largeMarker.setMap(largeMap);
}
[..]
jQuery(document).ready(function () {
[..]
initialize();
});
这里出了什么问题?
修改
不幸的是,下面的建议似乎不起作用。我来的关闭是从元素中删除 display:none 并将元素设置为使用jquery隐藏
[..]
jQuery(document).ready(function () {
[..]
$("#shadow").add($("#shadowContent"),$("#closebar"),$("#content")).hide();
});
具有以下结果
答案 0 :(得分:15)
是的,@ Argiropoulos-Stavros但是,将它添加为听众
google.maps.event.addListenerOnce(map, 'idle', function(){
google.maps.event.trigger(map, 'resize');
map.setCenter(location);
});
在渲染地图后,它将开始重新调整大小。
答案 1 :(得分:4)
我认为你正在使用v3。 所以google.maps.event.trigger(map,“resize”);
另请查看here
答案 2 :(得分:3)
我修好了!
我为largemap创建了一个自己的函数,并在元素打开时将它放在回调中
function largeMap(){
var largeLatlng = new google.maps.LatLng(51.92475, 4.38206);
var largeOptions = {zoom: 10, center: largeLatlng,mapTypeId: google.maps.MapTypeId.ROADMAP};
var largeMap = new google.maps.Map(document.getElementById("largeMap"), largeOptions);
var largeMarker = new google.maps.Marker({position: largeLatlng, map:largeMap, title:"Cherrytrees"});
largeMarker.setMap(largeMap);
}
[..]
$("#showRoute").click(function(e){
e.preventDefault();
$("#shadow").add($("#shadowContent"),$("#closebar"),$("#content")).fadeIn(500);
$("#shadowContent").show().css({'width':'750px','top':'25px','left':'50%','margin-left':'-400px'});
$("#closeBarLink").click(function(l){
l.preventDefault();
$("#shadow").add($("#shadowContent"),$("#closebar"),$("#content")).fadeOut(500);
});
largeMap();
});
非常感谢!!
答案 3 :(得分:2)
调用initialize();
功能。
$(document).ready(function () {
$("#shadow").show(function () {
initialize();
})
});
答案 4 :(得分:1)
当您在大地图中加载时,请尝试在地图代码的末尾添加此内容。
map.checkResize();
当Google地图首次在您的网页上呈现时,它会记录尺寸,以便以该尺寸显示地图图像。如果您要动态调整地图大小,则需要告诉API检查新大小。
答案 5 :(得分:0)
<script type='text/javascript' >
var geocoder, map;
function codeAddress() {
var address= '<?php echo $this->subject()->address; ?>';
geocoder = new google.maps.Geocoder();
geocoder.geocode({
'address': address
}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
var myOptions = {
zoom: 13,
center: results[0].geometry.location,
mapTypeId: google.maps.MapTypeId.ROADMAP
}
map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
var marker = new google.maps.Marker({
map: map,
position: results[0].geometry.location,
icon:'http://rvillage.com/application/themes/rvillage/images/map-marker.png'
});
var infowindow = new google.maps.InfoWindow({ content: 'coming soon' });
google.maps.event.addListener(marker, 'click', function() {
infowindow.open(map, this);
});
}
});
}
jQuery(document).ready(function () {
codeAddress();
});
</script>
答案 6 :(得分:0)
您正在使用带有jQuery的弹出窗口,我请求您在文档准备好时调用initialize()
函数($(document).ready(function() {initialize(); })
)。
弹出窗口显示后,尝试调用initialize()
函数。
约翰尼