gpt4 book ai didi

google-maps - LatLngBounds - 如何获得 SW 和 NE 点

转载 作者:行者123 更新时间:2023-12-02 00:46:07 24 4
gpt4 key购买 nike

我正在尝试使用 Google map 的自动完成功能并将结果偏置到 LatLngBounds。我希望能够在岛屿(例如夏威夷群岛)周围绘制一个矩形,并以这种方式获取 LatLngBounds。有什么工具可以帮助我吗?

最佳答案

很久以前,我写了一个“缩放窗口”,我对其进行了改编以供您使用。它只是 map 和矩形监听器。

http://jsfiddle.net/yV6xv/16/embedded/result/

查看代码:

http://jsfiddle.net/yV6xv/16/

要使用它,请首先手动放大并平移到您的岛屿。您要选择的整个区域必须在屏幕上可见。

然后单击一次以定义矩形角。将鼠标移向对角。 (将出现一个矩形选择)。再次单击以定义矩形区域。 map 上方的文本区域应为您提供选定的 LatLngBounds 以及 SW 和 NE 点。

当试图包含国际日期变更线时,它的表现并不如预期。

  var map;

var mapOptions = {
center: new google.maps.LatLng(0.0, 0.0),
zoom: 2,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
var bounds;
var pt1, pt2;
var rect;

function toLatLng(lat, lng) {
return new google.maps.LatLng(lat, lng);
}

function toBounds(j,k) {
var pts = [];
var latMin, latMax, lngMin, lngMax;
var sw, ne;

latMin = Math.min(j.lat(), k.lat());
latMax = Math.max(j.lat(), k.lat());

lngMin = Math.min(j.lng(), k.lng());
lngMax = Math.max(j.lng(), k.lng());

sw = toLatLng(latMin, lngMin);
ne = toLatLng(latMax, lngMax);
return new google.maps.LatLngBounds(sw, ne);
}

function initialize() {
map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions);
rect = new google.maps.Rectangle({
fillColor: "#FFFF00",
fillOpacity: 0.3,
strokeColor: "#0000FF",
strokeWeight: 2
});

// Activate the box
google.maps.event.addListener(map, 'click', function(event) {
pt1 = event.latLng;
rect.setMap(map);
});

// Modify the box's size
google.maps.event.addListener(map, 'mousemove', function(event) {
if(rect.getMap() == map) {
rect.setBounds(toBounds(pt1, event.latLng));
}
});

// Remove the zoom window and zoom in
google.maps.event.addListener(rect, 'click', function(event) {
rect.setMap(null);
pt2 = event.latLng;
myBounds = toBounds(pt1, pt2);

document.getElementById("selectedBounds").value = "new google.maps.LatLngBounds(new google.maps.LatLng" + myBounds.getSouthWest() + ", new google.maps.LatLng" + myBounds.getNorthEast() + ");";
});

// Allows shrinking the box
google.maps.event.addListener(rect, 'mousemove', function(event) {
if(rect.getMap() == map) {
rect.setBounds(toBounds(pt1, event.latLng));
}
});
}

HTML

<textarea id="selectedBounds" cols="60" rows="4"></textarea>
<div id="map_canvas"></div>​

关于google-maps - LatLngBounds - 如何获得 SW 和 NE 点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10957559/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com