Google maps 无法获取属性';getSouthWest';指未定义的或空的引用
我在Chrome上做了所有的开发工作,今天决定打开可怕的IE,看看那里的情况如何。我偶然发现我的地理位置代码有问题。我必须获得位置的Google maps 无法获取属性';getSouthWest';指未定义的或空的引用,google-maps,geolocation,Google Maps,Geolocation,我在Chrome上做了所有的开发工作,今天决定打开可怕的IE,看看那里的情况如何。我偶然发现我的地理位置代码有问题。我必须获得位置的getsoutwest和getsoutwest边界,这是通过名为codeLatLng()的函数中的以下代码完成的: IE上出现控制台错误: '无法获取未定义或空引用的属性'getSouthWest' 经过一点挖掘,我将结果引用从结果[0]更改为结果[1],这非常有效。然而,这个错误让我有点紧张,如果没有找到结果的边界,我的脚本可能会再次中断[1] 在使用地理定位时,
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()代码>,还是有更好的解决方案?如果有的话,告诉我我需要看得更远一些,因为我已经在这里坐了一个小时了。谢谢。如果没有边界,我会根据从该位置开始的半径请求数据。