Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 谷歌地图返回经度>;180英寸拉特林。图尔值_Javascript_Jquery_Google Maps Api 3 - Fatal编程技术网

Javascript 谷歌地图返回经度>;180英寸拉特林。图尔值

Javascript 谷歌地图返回经度>;180英寸拉特林。图尔值,javascript,jquery,google-maps-api-3,Javascript,Jquery,Google Maps Api 3,我正在建立一个覆盖多边形的全球地图。它在一个jQuery手风琴里面。每当我切换手风琴窗格,然后回到地图,它就会跳到南极洲。为了克服这种行为,我一直在尝试捕获当前的中心LatLng,将其存储在一个变量中,然后在返回地图的手风琴面板时设置中心() 它不起作用,所以我尝试使用.toUrlValue()方法将当前中心坐标转储到页面上的可见元素。当我向东或向西平移地图时,经度数字一直在增加。我以为它会转到180,然后重置为-180 我的代码: var currMapCenter = null; jQu

我正在建立一个覆盖多边形的全球地图。它在一个jQuery手风琴里面。每当我切换手风琴窗格,然后回到地图,它就会跳到南极洲。为了克服这种行为,我一直在尝试捕获当前的中心LatLng,将其存储在一个变量中,然后在返回地图的手风琴面板时设置中心()

它不起作用,所以我尝试使用.toUrlValue()方法将当前中心坐标转储到页面上的可见元素。当我向东或向西平移地图时,经度数字一直在增加。我以为它会转到180,然后重置为-180

我的代码:

var currMapCenter = null;

jQuery(document).ready(function() {
  jQuery("#accordion").bind('accordionchange', function(event, ui) {
    if (ui.newContent.attr('id') == 'region-list')
    {
    triggerMapResize(); 
    }
});
});

function initialize_map() {

//do all the initialization here...

currMapCenter = map.getCenter(); //set initial center in variable.

google.maps.event.addListener(map, 'center_changed', function() {
  currMapCenter=map.getCenter();
  jQuery("#description").html(currMapCenter.toUrlValue());//to see what is happening...
});
}

function triggerMapResize()
{
google.maps.event.trigger(map, "resize");
map.setCenter(currMapCenter);
}

指示getCenter()返回LatLng,而setCenter()需要LatLng。当我试图设置currMapCenter=map.getCenter()时,我是否误解了会发生什么?考虑到我的地图需要像当前一样包装,我如何捕获一个可用的LatLng以与setCenter()一起使用?

该行为是为getCenter方法记录的

getCenter()
板条
返回显示在地图中心的位置。请注意,此LatLng对象未被包裹。有关更多信息,请参阅LatLng

也许您可以使用getBounds()(如果地图缩小以显示多个副本,则可能无法使用)

getBounds()
LatLngBounds

返回当前视口的横向/横向边界。如果世界的多个副本可见,则边界的经度范围为-180到180度(含-180度)。

该行为将记录在getCenter方法中

getCenter()
板条
返回显示在地图中心的位置。请注意,此LatLng对象未被包裹。有关更多信息,请参阅LatLng

也许您可以使用getBounds()(如果地图缩小以显示多个副本,则可能无法使用)

getBounds()
LatLngBounds

返回当前视口的横向/横向边界。如果可以看到多个世界副本,则边界的经度范围为-180到180度。

现在看来,本主题的标题不准确,与实际问题无关。IE8——毫不奇怪——给我带来了各种各样的问题,根本无法绘制地图,而符合标准的浏览器也不错,只是在切换手风琴窗格时失去了中心

在我的原始代码中,我正在侦听“center_changed”事件以捕获当前地图中心坐标。我开始怀疑当手风琴关闭时,jQuery的事件是否会改变地图的位置,所以我将中心捕获事件切换为“mouseout”。这解决了问题,尽管我仍然不知道是什么原因造成的

旁注:我在IE以外的浏览器中成功地使用了window.onload=function(){initialize_map();},但IE被阻塞了,根本无法加载

var map=null;
var currMapCenter = null;

jQuery(document).ready(function() {
jQuery("#accordion").bind('accordionchange', function(event, ui) {
if (ui.newContent.attr('id') == 'region-list')
{
if(map==null) {
//first load; call map initialization
initialize_map();
}
triggerMapResize(); 
}
});

function initialize_map() {

//do initilization here...

google.maps.event.addListener(map, 'mouseout', function() { 
currMapCenter=map.getCenter();
});
}

function triggerMapResize() {
google.maps.event.trigger(map, "resize");
map.setCenter(currMapCenter);
}

以上代码工作正常;在Firefox 14、Chrome和IE8中测试。

现在看来,这个主题的标题不准确,与实际问题无关。IE8——毫不奇怪——给我带来了各种各样的问题,根本无法绘制地图,而符合标准的浏览器也不错,只是在切换手风琴窗格时失去了中心

在我的原始代码中,我正在侦听“center_changed”事件以捕获当前地图中心坐标。我开始怀疑当手风琴关闭时,jQuery的事件是否会改变地图的位置,所以我将中心捕获事件切换为“mouseout”。这解决了问题,尽管我仍然不知道是什么原因造成的

旁注:我在IE以外的浏览器中成功地使用了window.onload=function(){initialize_map();},但IE被阻塞了,根本无法加载

var map=null;
var currMapCenter = null;

jQuery(document).ready(function() {
jQuery("#accordion").bind('accordionchange', function(event, ui) {
if (ui.newContent.attr('id') == 'region-list')
{
if(map==null) {
//first load; call map initialization
initialize_map();
}
triggerMapResize(); 
}
});

function initialize_map() {

//do initilization here...

google.maps.event.addListener(map, 'mouseout', function() { 
currMapCenter=map.getCenter();
});
}

function triggerMapResize() {
google.maps.event.trigger(map, "resize");
map.setCenter(currMapCenter);
}

以上代码工作正常;在Firefox 14、Chrome和IE8上进行了测试。

谢谢,这个线程帮助了我。这是我用来验证noWarp设置并访问我所需的中心的代码,无需坐标超过+/-180度:-

var gmap_center = new google.maps.LatLng(map.getCenter().lat(), map.getCenter().lng(), false);

console.log('GMap lat/lng with default noWrap:true = ' + map.getCenter().lat() + ' / ' + map.getCenter().lng());

console.log('GMap lat/lng with noWrap:false = ' + gmap_center.lat() + ' / ' + gmap_center.lng());

谢谢,这条线帮助了我。这是我用来验证noWarp设置并访问我所需的中心的代码,无需坐标超过+/-180度:-

var gmap_center = new google.maps.LatLng(map.getCenter().lat(), map.getCenter().lng(), false);

console.log('GMap lat/lng with default noWrap:true = ' + map.getCenter().lat() + ' / ' + map.getCenter().lng());

console.log('GMap lat/lng with noWrap:false = ' + gmap_center.lat() + ' / ' + gmap_center.lng());
getCenter()返回LatLng,但可能超过180度。这取决于地球绕其轴线旋转的次数。:)

我找到了解决这个问题的简单方法

var loc=map.getCenter();
loc=new google.maps.LatLng(loc.lat(), loc.lng(), false);
现在LatLng被重新计算为正确的值,您可以使用它…

getCenter()返回LatLng,但它可能超过180度。这取决于地球绕其轴线旋转的次数。:)

我找到了解决这个问题的简单方法

var loc=map.getCenter();
loc=new google.maps.LatLng(loc.lat(), loc.lng(), false);

现在LatLng被重新计算为正确的值,您可以使用它…

我在Map object部分中看到了这一点,但我不明白“未包装”意味着什么,因为它被重新分配给了Map。我试着想办法把它包起来(-180到180),但也许这没关系。我认为是jQuery操作在地图中心切换手风琴窗格时关闭了地图中心。在显示地图后触发“调整大小”事件不起作用?文档中说“resize-当div更改大小时,开发人员应该在地图上触发此事件:google.maps.event.trigger(map,'resize')。”当您隐藏地图时,实际上是在更改地图的大小。resize事件解决了我最初的问题,即地图仅部分绘制(如中所述)尽管如此,即使在这个位置上,它也没有保持中心位置。昨晚我找到了一个解决方案,并将在我准备好相关代码后发布。LatLng构造函数有一个可选的参数包装,您可以使用获得的坐标创建一个ne LatLng对象,将true作为可选参数传递。我在Map object部分看到,但不明白“未包装”意味着什么,因为它被重新分配给了地图。我试图找到一种方法让它以-180:1的比例包装起来