Google位置使用视口而不是半径
Google places use viewport instead of radius
我如何使用viewport来找到与谷歌地图api而不是半径的地方,半径方法对我来说不是很准确。
。我使用类型限制只在伦敦的50,000米半径内得到nigh_club,并且我没有在我的标记中得到ministry of sound。
如果有人有关于如何改进和提出请求的建议,我将很高兴。
注意:搜索请求
var request = {
location: location,
radius: 3000,
//types: ['night_club, bar']
keyword: 'night+club'
};
使用LatLngBounds
来定义基于定义视口的SW和NE坐标的location
,而不是LatLng
+ radius
。
var viewport = new google.maps.LatLngBounds(
new google.maps.LatLng(southLat, westLng), // SW
new google.maps.LatLng(northLat, eastLng) // NE
);
var request = {
location: viewport,
// types: ['night_club', 'bar']
keyword: 'night club'
};
https://developers.google.com/maps/documentation/javascript/reference LatLngBounds
你可以使用这个函数获得当前的视口半径
我在这里做的是获取google地图中当前视口的中心和东北点,然后我计算这两点之间的距离,就是这样。meters
var bounds = window.map.getBounds();
var ne_bounds = bounds.getNorthEast();
var center = bounds.getCenter();
var radius = google.maps.geometry.spherical.computeDistanceBetween(center, ne_bounds);
你也可以通过创建一个像这样的圆圈来检查
function draw_map_bounds_circle() {
var bounds = window.map.getBounds();
var ne_bounds = bounds.getNorthEast();
var circle_center = bounds.getCenter();
var circle_radius = google.maps.geometry.spherical.computeDistanceBetween(circle_center, ne_bounds);
const newCircle = new google.maps.Circle({
strokeColor: "#7CA0C0",
strokeOpacity: 0.8,
strokeWeight: 2,
fillColor: "#7CA0C0",
fillOpacity: 0.35,
map: window.map,
center: circle_center,
radius: circle_radius
});
}
注意:确保从google maps API导入几何库。引用https://developers.google.com/maps/documentation/javascript/geometry
相关文章:
- 将视口底部滚动到元素底部
- 使用JavaScript根据窗口/视口的高度动态调整图像大小
- 使用条件语句,使 jquery fadeIn/fadeOut 仅在视口 >= 480px 时才有效
- 宽度为100%的CSS元素位于视口之外
- CSS3:当页面向下滚动到第一个视口时,是否可以在元素上触发转换
- 如何设置浏览器视口大小
- Javascript em根据窗口/视口尺寸调整大小,不影响文档样式的text/css
- 检测视口并重定向到不同的主页
- 如何在按住鼠标按钮且光标在视口外时检测鼠标离开
- iOS iPad平板电脑渲染视口不正确
- 移动设备上的视口问题
- 视口大小更改时自动刷新页面
- 在移动设备上获取视口大小
- 获取元素相对于视口顶部的位置
- 跨浏览器:如何根据视口高度调整元素的垂直位置
- 有没有一种技术来确定任何给定视口的页面折叠位置
- 如何获得iframe相对于顶部窗口的位置's视口
- Google位置使用视口而不是半径
- 在JavaScript中基于视口位置隐藏元素
- 查找元素相对于视口或文档的整数像素位置:getBoundingClientRect