yav*_*avg 5 google-maps google-maps-api-3
我试图制作一个告诉我坐标是否包含在中的应用程序circle。
为此,每次我在地图上单击一个点时,都会得到坐标。我想知道新坐标是否包含在圆内
我也想知道如何使一个圆占据距坐标5米的位置。在我的示例中,半径为:50000但是我不知道如何执行转换以将值设置为米。
这是我的代码:
http://plnkr.co/edit/OI4sjcuS526rFYxPnvDv?p=preview
function initMap() {
var map = new google.maps.Map(document.getElementById('map'), {
center: {lat:4.624335 , lng: -74.063644 },
zoom: 5,
});
//circle coordinates
var circle = new google.maps.Circle({
map: map,
radius: 50000,
fillColor: '#FFFFFF',
opacity:0,
center:{lat:4.624335 , lng: -74.063644 }
});
google.maps.event.addListener(map, 'click', function(e) {
//I get new coordinates ( e.latLng)
});
}
Run Code Online (Sandbox Code Playgroud)
谢谢!
更新
他们已将此问题标记为具有此解决方案的重复问题(http://jsfiddle.net/kaiser/wzcst/embedded/result/)
但这并不能真正满足我的问题,因为如您在图像中所见,解决方案失败了。
tom*_*sef 14
根据我在你的问题中的理解,你想要做的是
这里有一篇关于这个的帖子:检查纬度和经度是否在一个圆圈内 谷歌地图。如果您检查已接受的答案(归功于Guffa的天才算法),他会使用此函数来检查该点是否在半径范围内:
// credits to user:69083 for this specific function
function arePointsNear(checkPoint, centerPoint, km) {
var ky = 40000 / 360;
var kx = Math.cos(Math.PI * centerPoint.lat / 180.0) * ky;
var dx = Math.abs(centerPoint.lng - checkPoint.lng) * kx;
var dy = Math.abs(centerPoint.lat - checkPoint.lat) * ky;
return Math.sqrt(dx * dx + dy * dy) <= km;
}
Run Code Online (Sandbox Code Playgroud)
现在至于您想要实现的目标,您只需将其添加到您的点击事件中即可。这是我所做的:
google.maps.event.addListener(map, 'click', function(event) {
var click = event.latLng;
var locs = {lat: event.latLng.lat(), lng: event.latLng.lng()};
var n = arePointsNear(user, locs, diameter);
Run Code Online (Sandbox Code Playgroud)
然后我添加了一个条件,如果函数返回 true,标记将有一个标签“ I ”(内部的缩写)。
if(n){
marker = new google.maps.Marker({
map: map,
position: locs,
label: {
text:"I", //marking all jobs inside radius with I
color:"white"
}
});
Run Code Online (Sandbox Code Playgroud)
然后,如果没有,标记将被标记为“ O ”(外部的缩写)......
}else{
marker = new google.maps.Marker({
map: map,
position: locs,
label: {
text:"O", //marking all jobs outside radius with O
color:"white"
}
});
}
});
Run Code Online (Sandbox Code Playgroud)
这是我创建的示例应用程序,以防万一您想查看它的实际效果:http : //jsbin.com/hujusod/edit?js,output
这可能与Check if a latitude and longitude is within a circle google maps 重复。或如何根据与输入的地址最近的纬度/经度显示内容。
但是由于函数以不同的方式使用,我发布了我的答案来帮助你做你最初打算做的事情。
arePointsNear如果这只是您需要的,请随意对函数来自何处的答案进行投票。
我希望这有帮助!
| 归档时间: |
|
| 查看次数: |
3438 次 |
| 最近记录: |