我在使用谷歌地图时遇到了一个特殊的问题。我设置了一个“搜索最近的地方”功能,使用保存在我的数据库中的商店列表(带有纬度和经度)。当用户发布它的地址时,我对其进行地理编码,在地图上将其标记为绿色图标,然后我使用 Haversine 公式根据输入的纬度和经度获取最近的 10 个位置。
然后我在一个 html 表中显示所有位置,并将相关标记放在我的谷歌地图上,并带有适当的信息窗口。
本地一切正常,但是当我在生产服务器上上传时,一切正常,但地图:我的表格已填充,距离已正确计算,源代码(见下文)显示所有变量已正确解释,但地图开始完全缩放在,在太平洋的某个地方(意大利)的中心,放大到我需要滚动鼠标轮很多才能看到一些东西。
然后标记显示在几乎正确的位置 - 除了不存在的绿色位置。此外,当我单击标记时,信息窗口从标记左侧开始 30 或 40 像素,而不是在它的正上方,因为它发生在本地。
我在控制台中没有收到任何错误,生成的源代码在本地版本和生产版本之间完全一样,但是我遇到了这种奇怪的行为。
我不知道会发生什么,我尝试搜索谷歌,但我找不到类似的东西。如果值得的话,生产服务器是 Linux 机器,php 5.3.2,并且位于表示 linux 机器的“第三层”,即 url 看起来像http://lnx.mydomain.com/。
任何人都知道可能会发生什么?
<script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?key=[myapikey]&sensor=false&language=it"></script>
<script>
var locations = [
['location1', 45.4592775, 9.1599699, ' PIAZZA VESUVIO 14, 20144'],
['location2', 45.4534901, 9.170425, ' P.LE STAZIONE PORTA GENOVA 5 / 3,']
];
var infowindow = new google.maps.InfoWindow();
var map;
function initialize() {
var mapOptions = {
zoom: 10,
center: new google.maps.LatLng(45,4510239, 9,1606903),
mapTypeId: google.maps.MapTypeId.ROADMAP
};
map = new google.maps.Map(document.getElementById('mappa'),mapOptions);
var startMarker = new google.maps.Marker({
position: new google.maps.LatLng(45,4510239, 9,1606903),
map: map,
title: 'user inserted address here'
});
google.maps.event.addListener(startMarker, 'click', (function(startMarker){
return function(){
infowindow.setContent('user inserted address here');
infowindow.open(map, startMarker);
}
})(startMarker));
startMarker.setIcon('http://maps.google.com/mapfiles/ms/icons/green-dot.png');
var marker;
for (i = 0; i < locations.length; i++) {
marker = new google.maps.Marker({
position: new google.maps.LatLng(locations[i][1], locations[i][2]),
map: map,
title: locations[i][0],
animation: google.maps.Animation.DROP,
});
google.maps.event.addListener(marker, 'click', (function(marker, i) {
return function() {
infowindow.setContent('<div class="default-text">'+locations[i][0]+'<br /><br />'+locations[i][3]+'</div>');
infowindow.open(map, marker);
}
})(marker, i));
}
}
google.maps.event.addDomListener(window, 'load', initialize);
</script>