Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.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
Google maps 无法获取属性';getSouthWest';指未定义的或空的引用_Google Maps_Geolocation - Fatal编程技术网

Google maps 无法获取属性';getSouthWest';指未定义的或空的引用

Google maps 无法获取属性';getSouthWest';指未定义的或空的引用,google-maps,geolocation,Google Maps,Geolocation,我在Chrome上做了所有的开发工作,今天决定打开可怕的IE,看看那里的情况如何。我偶然发现我的地理位置代码有问题。我必须获得位置的getsoutwest和getsoutwest边界,这是通过名为codeLatLng()的函数中的以下代码完成的: IE上出现控制台错误: '无法获取未定义或空引用的属性'getSouthWest' 经过一点挖掘,我将结果引用从结果[0]更改为结果[1],这非常有效。然而,这个错误让我有点紧张,如果没有找到结果的边界,我的脚本可能会再次中断[1] 在使用地理定位时,

我在Chrome上做了所有的开发工作,今天决定打开可怕的IE,看看那里的情况如何。我偶然发现我的地理位置代码有问题。我必须获得位置的
getsoutwest
getsoutwest
边界,这是通过名为
codeLatLng()
的函数中的以下代码完成的:

IE上出现控制台错误:

'无法获取未定义或空引用的属性'getSouthWest'

经过一点挖掘,我将结果引用从结果[0]更改为结果[1],这非常有效。然而,这个错误让我有点紧张,如果没有找到结果的边界,我的脚本可能会再次中断[1]

在使用地理定位时,是否有一种更有效的、内置的获取边界的方法?我还在地理定位时通过以下代码获取纬度和经度:

if (navigator.geolocation) {
    navigator.geolocation.getCurrentPosition(successFunction, errorFunction);
}
//Get the latitude and the longitude;
function successFunction(position) {
    var lat = position.coords.latitude;
    var lng = position.coords.longitude;
    codeLatLng(lat, lng);
}
var geocoder1 = new google.maps.Geocoder();
function codeLatLng(lat, lng) {
    var latlng = new google.maps.LatLng(lat, lng);
    geocoder1.geocode({'latLng': latlng}, function(results, status) {
        if (status == google.maps.GeocoderStatus.OK) {
        // I have a bunch of code here that creates hidden
        // input fields with the lat, lng, swlat, swlng, nelat and nelng
        });
    });
});
swlat = place.geometry.viewport.getSouthWest().lat();
// etc for swlng, nelat & nelng
我知道对于Places,我可以使用以下代码:

if (navigator.geolocation) {
    navigator.geolocation.getCurrentPosition(successFunction, errorFunction);
}
//Get the latitude and the longitude;
function successFunction(position) {
    var lat = position.coords.latitude;
    var lng = position.coords.longitude;
    codeLatLng(lat, lng);
}
var geocoder1 = new google.maps.Geocoder();
function codeLatLng(lat, lng) {
    var latlng = new google.maps.LatLng(lat, lng);
    geocoder1.geocode({'latLng': latlng}, function(results, status) {
        if (status == google.maps.GeocoderStatus.OK) {
        // I have a bunch of code here that creates hidden
        // input fields with the lat, lng, swlat, swlng, nelat and nelng
        });
    });
});
swlat = place.geometry.viewport.getSouthWest().lat();
// etc for swlng, nelat & nelng
例如,我可以在
successFunction()中使用类似的东西吗?我环顾四周,尝试了一些方法:

1) 我添加了一个新的
var bounds=new google.maps.LatLngBounds()
var latlng
下,然后将
var swlat
更改为:

var swlat = bounds.getSouthWest().lat();
但它返回了180度的纬度

2) 我将上面1)中的
var-bounds
更改为
var-bounds=map.getBounds(),但这给了我整个英国的界限

我现在真的抓狂了。有人能给我指点解决办法吗?我读过HTML地理定位,显然像
position.coords.soutwest.latitude
这样的东西没有定义,这很遗憾

我唯一能想到的另一件事是迭代结果,从结果[0]开始,直到找到一组地理位置的边界。但这似乎需要大量的工作,如果地理定位有一个现成的边界就好了,就像有lat和lng一样

非常感谢您的帮助

更新

我尝试使用代码:

var bounds = map.getBounds(new google.maps.LatLngBounds(latlng, latlng));
var ne = bounds.getNorthEast();
var sw = bounds.getSouthWest();

这似乎是一个好主意,但现在又回到了整个英国的边界。总有一天我会到达那里

不保证返回的
bounds
-属性

e、 g.
位置类型
为屋顶时,结果为精确匹配(坐标)

对于街道和国家、州等地区,通常会返回边界


当不返回边界时,您可以将所有变量设置为返回的位置,或者使用
viewport
-属性(它也是
LatLngBounds
-对象)

我正在使用视口通过Places api获取swlat nelng以进行自动完成,这很适合我。当我进行地理定位时,我将进行一些编码,尝试将其放入我的隐藏字段中。如果我有问题的话,希望你不介意我说实话。如果找不到边界或视口,那么我可以简单地从返回的纬度和经度构建一个带有1英里缓冲区的自定义视口。我用autocomplete做这个,效果很好。让我来做一些编码…当然你可以简单地添加一些空白,但最终的目标是什么?例如,我住在一条很小的街道上(可能有80米长),当我加上1英里的边距时,结果是不理想的。当然,最终目标是在输入边界的x英里范围内找到供应商。因此,实际上不希望搜索边界太小,因为这样会限制结果。小问题,目前我有
var swlng=results[1].geometry.bounds.getsoutwest().lng(),所以您建议我将其更改为
var swlng=results[1].geometry.viewport.getsoutwest().lng(),还是有更好的解决方案?如果有的话,告诉我我需要看得更远一些,因为我已经在这里坐了一个小时了。谢谢。如果没有边界,我会根据从该位置开始的半径请求数据。