【发布时间】:2017-02-17 00:46:44
【问题描述】:
我使用了名为:gmaps4rails 的 GEM,它在某种程度上做得很完美,但问题是我无法将我的地图居中。它显示在非常角落。
我想要做的是,显示以马萨诸塞州为中心的地图,其中包含许多别针。
我也在使用它们现在正在加载的选项卡,但无法弄清楚如何调整以将其设置为 MASSACHUSETTS 的中心。
这是我的代码:
<script src="https://maps.googleapis.com/maps/api/js?key=KEYGOESHERE" type="text/javascript"></script>
<script src="//cdn.rawgit.com/mahnunchik/markerclustererplus/master/dist/markerclusterer.min.js"></script>
<script src='//cdn.rawgit.com/printercu/google-maps-utility-library-v3-read-only/master/infobox/src/infobox_packed.js' type='text/javascript'></script>
<script>
$(document).ready(function () {
var map_center = new google.maps.LatLng('42.0574342', '-72.8422761');
var handler = Gmaps.build('Google');
handler.buildMap({
provider: {
disableDefaultUI: true,
zoomControl: true,
zoom: 12,
center: map_center
},
internal: {
id: 'map'
}
},
function () {
var markers = handler.addMarkers(<%=raw @retailers.to_json %>);
handler.bounds.extendWith(markers);
handler.fitMapToBounds();
}
);
$('.nav-tabs').on('shown.bs.tab', function () {
google.maps.event.trigger(window, 'resize', {});
var reCenter = new google.maps.LatLng('42.0574342', '-72.8422761');
handler.setCenter(reCenter);
});
});
</script>
和分区:
<div style='width: 825px; height: 350px;'>
<div id="map" style='width: 825px; height: 350px;'></div>
</div>
这是示例图片:
这里是演示:
var map_center = new google.maps.LatLng(42.0574342, -72.8422761);
var handler = Gmaps.build('Google');
handler.buildMap({
provider: {
disableDefaultUI: true,
zoomControl: true,
zoom: 12,
center: map_center
},
internal: {
id: 'map'
}
},
function() {
var markers = handler.addMarkers([{
"lat": "42.3420564",
"lng": "-71.1377384",
"marker_title": "BRIX Wine Shop"
}, {
"lat": "42.3484068",
"lng": "-71.1563419",
"marker_title": "Bauer Wine \u0026 Spirits"
}, {
"lat": "42.3560102",
"lng": "-71.1275915",
"marker_title": "Boston Wine Exchange"
}, {
"lat": "42.3484068",
"lng": "-71.1563419",
"marker_title": "Bauer Wine \u0026 Spirits"
}]);
handler.bounds.extendWith(markers);
handler.fitMapToBounds();
}
);
$('.nav-tabs').on('shown.bs.tab', function() {
google.maps.event.trigger(window, 'resize', {});
var reCenter = new google.maps.LatLng(42.0574342, -72.8422761);
handler.setCenter(reCenter);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyBVGMRkZg8rFSxoUspEiZmnaMRqT3WO8wU" type="text/javascript"></script>
<script src="https://raw.githubusercontent.com/HPNeo/gmaps/master/gmaps.js"></script>
<script src="//cdn.rawgit.com/mahnunchik/markerclustererplus/master/dist/markerclusterer.min.js"></script>
<div style='width: 825px; height: 350px;'>
<div id="map" style='width: 825px; height: 350px;'></div>
</div>
【问题讨论】:
-
可能不是理想的解决方案,但请尝试将
setCenter()包装在setTimout()中 -
你能发布一些我应该怎么做的代码吗?我相信情况并非如此,但可能是这样。
-
setTimeout(function(){ handler.setCenter(reCenter)},50 ); -
@charlietfl 还是一样的结果 :-)
-
那些应该是数字而不是纬度/经度的字符串
标签: jquery google-maps-api-3 google-maps-markers gmaps4rails