- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
知道一个坐标点是否在另外两个坐标之间。
我正在制作一个谷歌地图应用程序,我需要知道某个点是否在两个 LatLng 点(起点和终点)之间。
我正在寻找如下函数:
var currentCoord = {lat: 51.8732, lng: -118.6346};
var startCoord = {lat: 61.3434, lng: -118.0046};
var endCoord = {lat: 50.5468, lng: -118.5435};
function isBetween(startCoord, endCoord, currentCoord){
//calculations here
return "true if currentCoord is between startCoord and endCoord, or false otherwise";
}
为了实现这一点,我阅读了几个问题和主题:
if
语句。无论我尝试什么,我都无法让它发挥作用,但我确实有一个失败实验的最小例子:
"use strict";
/*global google*/
function initialize() {
let mapOptions = {
zoom: 3,
center: new google.maps.LatLng(0, -180),
mapTypeId: google.maps.MapTypeId.TERRAIN
};
let map = new google.maps.Map(document.getElementById('map-canvas'),
mapOptions);
let flightPlanCoordinates = [
new google.maps.LatLng(37.772323, -122.214897),
new google.maps.LatLng(21.291982, -157.821856),
new google.maps.LatLng(-18.142599, 178.431),
new google.maps.LatLng(-27.46758, 153.027892)
];
let flightPath = new google.maps.Polyline({
path: flightPlanCoordinates,
geodesic: true,
strokeColor: '#FF0000',
strokeOpacity: 1.0,
strokeWeight: 2
});
flightPath.setMap(map);
google.maps.event.addListener(flightPath, 'mouseover', function(event) {
console.log("Marker is over the polyline");
});
let marker = new google.maps.Marker({
position: new google.maps.LatLng(37.772323, -122.214897),
draggable: true,
map: map,
title: 'Drag me!'
});
marker.addListener('drag', function(event) {
let startPoint = {
lat: 37.772323,
lng: -122.214897
};
let endPoint = {
lat: 21.291982,
lng: -157.821856
};
let currentPoint = {
lat: marker.getPosition().lat(),
lng: marker.getPosition().lng()
};
if (checkCoordinate(startPoint, endPoint, currentPoint))
console.log("in line !");
});
}
google.maps.event.addDomListener(window, 'load', initialize);
function checkCoordinate(start, end, point) {
var slope = (end.lng - start.lng) / (end.lat - start.lat);
var newSlope = (end.lng - point.lng) / (end.lat - point.lat);
return (point.lat > start.lat && point.lat < end.lat && point.lng > start.lng && point.lng < end.lng && slope == newSlope);
}
html,
body,
#map-canvas {
height: 100%;
margin: 0px;
padding: 0px
}
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no">
<meta charset="utf-8">
<title>Simple Polylines</title>
<link rel="stylesheet" type="text/css" href="style.css">
<script src="https://maps.googleapis.com/maps/api/js?v=3"></script>
<script src="script.js" type="text/javascript"></script>
</head>
<body>
<div id="map-canvas"></div>
</body>
</html>
最佳答案
一个选择是使用 google.maps.geometry.poly.isLocationOnEdge方法。
代码片段:
var map;
function initialize() {
var mapOptions = {
zoom: 2,
center: new google.maps.LatLng(0, -180),
mapTypeId: google.maps.MapTypeId.TERRAIN
};
map = new google.maps.Map(document.getElementById('map-canvas'),
mapOptions);
var flightPlanCoordinates = [
new google.maps.LatLng(37.772323, -122.214897),
new google.maps.LatLng(21.291982, -157.821856),
new google.maps.LatLng(-18.142599, 178.431),
new google.maps.LatLng(-27.46758, 153.027892)
];
var flightPath = new google.maps.Polyline({
path: flightPlanCoordinates,
geodesic: false,
strokeColor: '#FF0000',
strokeOpacity: 1.0,
strokeWeight: 2
});
flightPath.setMap(map);
var marker = new google.maps.Marker({
position: new google.maps.LatLng(37.772323, -122.214897),
draggable: true,
map: map,
title: 'Drag me!'
});
marker.addListener('dragend', function(event) {
var startPoint = {
lat: 37.772323,
lng: -122.214897
};
var startMarker = new google.maps.Marker({
position: startPoint,
map: map
});
var endPoint = {
lat: 21.291982,
lng: -157.821856
};
var endMarker = new google.maps.Marker({
position: endPoint,
map: map
});
var currentPoint = {
lat: marker.getPosition().lat(),
lng: marker.getPosition().lng()
};
if (checkCoordinate(startPoint, endPoint, marker.getPosition()))
console.log("in line !");
});
}
google.maps.event.addDomListener(window, 'load', initialize);
function checkCoordinate(start, end, point) {
return google.maps.geometry.poly.isLocationOnEdge(point, new google.maps.Polyline({
map: map,
path: [start, end]
}), 10e-1);
}
html,
body,
#map-canvas {
height: 100%;
margin: 0px;
padding: 0px
}
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no">
<meta charset="utf-8">
<title>Simple Polylines</title>
<link rel="stylesheet" type="text/css" href="style.css">
<script src="https://maps.googleapis.com/maps/api/js?v=3"></script>
<script src="script.js" type="text/javascript"></script>
</head>
<body>
<div id="map-canvas"></div>
</body>
</html>
关于javascript - 查找 LatLng Coord 是否位于其他两个 LatLng Coords 之间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38353931/
我正在尝试制作一个迷宫游戏。 我有“M”的怪物和“*”的宝藏。 如果怪物“M”吃掉了宝藏“*”,我希望游戏打印“GAME OVER”并退出。 如何检查 if(monster[x][y] == 宝藏[x
目标 知道一个坐标点是否在另外两个坐标之间。 背景 我正在制作一个谷歌地图应用程序,我需要知道某个点是否在两个 LatLng 点(起点和终点)之间。 我正在寻找如下函数: var currentCoo
我是js新手。 我需要根据 滚动页面我的大学项目中的 tag href 属性。 ScrollTop 功能不起作用,因为我的项目是单页应用程序。我可以使用 window.scrollTo(x-coor
我正在调用 openweathermap 的网络服务,它在 map 上显示预报天气。 我正在解析其他标签,如天气、温度、风等。但是当我解析标签图标时,我在这个坐标上得到了错误:[weatherItem
我正在尝试使用 Win32 控制台 API 在 Windows 中为控制台应用程序实现进度条。我的问题是编译器给出了错误,error C2059: syntax error : 'constant'。
我看到了一个与我想到的问题类似的问题,但该解决方案对我不起作用,所以想在这里发帖以寻求帮助。 我正在根据有关地理空间数据的 DataCamp 类(class)进行练习。下面是我作为开始执行的代码: l
我正在尝试使用 oozie 中的以下内容获取当前时间戳: date ${coord:formatTime(coord:dateOffset(coord:nominalTime(), -1,
我正在为我的 cs 课编写一个 Game of life 程序,而且我的一切都很好(虽然我希望我现在使用不同的结构,但哦,好吧)。我遇到的问题是我无法正确读取我们的输入文件。它是这样设置的:第一个数字
coords.accuracy 是如何测量的,单位是什么? 目标是在查找位置时使用它来确定误差半径。 最佳答案 通常以米为单位表示。 Geolocation API specified by W3C说
我想要一个形状,比如 map 中特定区域的圆形。借助 Html 中的 area 标记,我可以做到这一点。但是我如何为 coords 属性赋值,以便我需要那个特定区域的形状? 最佳答案 使用 GIMP
这个问题在这里已经有了答案: making the in a tag visible during development (5 个答案) How to put border on ? (1 个
我试图制作html图像
最近,在 Stack Overflow 的人们(我非常感谢他们)的帮助下,我用 java 完成了我自己的 Tron 游戏重制版。然而,发生了一些事情,现在游戏不会结束,因为我为测试玩家是否交叉路径而创
这个问题在这里已经有了答案: How do you add marker to map using leaflet map.on('click', function) event handler (
我正在使用带有地理定位功能的 Google Maps API。一切都按预期工作,但我的控制台中不断出现此错误: Uncaught TypeError: Cannot read property 'co
我正在尝试使用 jQuery offset() 函数定位绝对定位的 div。这个想法是将它定位在与 DOM 的另一个元素的固定偏移处。这发生在具有多个嵌套 div 的相当复杂的环境中。 奇怪的是调用它
我已经浏览了几个小时来寻找解决方案。我对 JavaScript 的了解很少,我实际上正在学习它。 我在获取用户的 GPS 位置时遇到问题。我想 :- 获取用户的位置(jQuery)。- 通过Ajax
这个问题在这里已经有了答案: Pointer to class data member "::*" (18 个回答) 1年前关闭。 所以我一直在看一些东西,发现这个线程Aliasing struct
我可以获取自己的经度和纬度并将它们保存到 vars 中: var myLat = position.coords.latitude; var myLong = position.coords.long
我正在制作游戏 使用 Slick2D。当玩家进入有敌人的 window 下时,他们可以射击,并获得分数。除了射击之外,我已经完成了所有机械师。这是我关于它如何运作的“计划”。 当玩家到达窗口下方(程序
我是一名优秀的程序员,十分优秀!