我正在尝试将变量传递给google.maps.LatLngBounds,但它不起作用。唯一似乎有用的是如果我将数字硬编码为浮点数(文字)如果我尝试下面的数据就失败了。我已尝试过各种铸造方式,但它不会显示出来。以下示例是我尝试过的最后一件事。
我正在从一个地址对中心进行地理编码,并尝试创建一个围绕中心的叠加层,以便图像叠加层始终位于中心后面。
var x1 = (parseFloat(xLat) - 0.0003).toFixed(6);
var y1 = (parseFloat(yLon) + 0.0003).toFixed(6);
var x2 = (parseFloat(xLat) + 0.0003).toFixed(6);
var y2 = (parseFloat(yLon) - 0.0003).toFixed(6);
var coordinates1 = x1 + "," + y1;
var coordinates2 = x1 + "," + y1;
var imageBounds = new google.maps.LatLngBounds(
new google.maps.LatLng( parseFloat(coordinates1.split(",")[0]), parseFloat(coordinates1.split(",")[1]) ), //sw
new google.maps.LatLng( parseFloat(coordinates2.split(",")[0]), parseFloat(coordinates2.split(",")[1]) ) //ne
);
为什么会失败的任何想法?我知道还有其他类似的问题,这些解决方案都没有奏效。我想我已经尝试了所有这些,字面意思。
答案 0 :(得分:3)
只是对大卫的好答案的跟进,将其作为答案而不是评论发布,因为我无法在评论中进行代码格式化。
让我们使用与Maps API中的术语相对应的名称,而不是像x1
这样的名称。首先,我要将xLat
重命名为lat
,将yLon
重命名为lng
,然后我们将从那里开始。此外,为了清晰起见,我们将逐步完成:
var s = lat - 0.0003;
var w = lng - 0.0003;
var n = lat + 0.0003;
var e = lng + 0.0003;
var sw = new google.maps.LatLng( s, w );
var ne = new google.maps.LatLng( n, e );
var imageBounds = new google.maps.LatLngBounds( sw, ne );
请注意我们最终修复了一个错误,因为这些名称现在更清晰了。南方总是小于北方,西方小于东方(忽略180经线)。使用x1
样式名称,不清楚哪个是哪个,并且一个错误潜入代码中North(y2
) less 而不是South({{1 }})。当您的变量名称没有意义时,这很容易发生。
另一个有趣的观点是代码不再需要y1
和// sw
条评论。事实上,即使你回到不使用// ne
和sw
变量的风格,它仍然清楚哪个是西南,哪个是东北:
ne
请注意这些评论在这里仍然是不必要的。
不要误会我的意思,我都是好评,但是当你可以使用一个有意义的变量名代替时,这是一个真正的改进。
答案 1 :(得分:1)
google.maps.LatLng类构造函数LatLng(lat:number,lng:number)Documentation
var x1 = xLat - 0.0003;
var y1 = yLon - 0.0003;//Was + 1 in Question & Origonal Answer
var x2 = xLat + 0.0003;
var y2 = yLon + 0.0003;//Was - 1 in Question & Origonal Answer
var imageBounds = new google.maps.LatLngBounds(
new google.maps.LatLng( x1, y1), //sw
new google.maps.LatLng( x2, y2) //ne
);
编辑更改了y1& y2回应迈克尔的评论和答案,因为他们错了