我正在考虑根据与用户当前位置的距离过滤谷歌地图标记。我将此设置为从数据库中引入标记并显示在地图上,但我想限制这些标记的显示,仅显示距离用户当前位置3英里的标记。
我收到JSON形式的标记(具有lat long详细信息)如下:
function showMarkers(str) {
if (str == "") {
document.getElementById("products").innerHTML = "";
return;
}
if (window.XMLHttpRequest) {
// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp = new XMLHttpRequest();
} else { // code for IE6, IE5
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
//$('#mapMarkerPositions').html(this.responseText);
let data = JSON.parse(this.responseText);
merchantMarkers = [];
for (let i = 0; i < data.length; i++) {
merchantMarkers[i] = data[i];
}
resetMarker();
reloadMarkers();
}
}
xmlhttp.open("GET", "filterMarkers.php?s=" + str, true);
xmlhttp.send();
}
收到的JSON示例:
0: [,…]
0: "<a style="margin-left: 8px; font-weight: bold; font-family: Courier, Arial, Helvetica, sans-serif;">TestMerchant1</a><br>
↵ <button class="seeMerchantButton" onclick="showMerchant('TestMerchant1');showProfile();" value="TestMerchant1">See merchant</button>"
1: "51.503366"
2: "-0.223477"
3: "info"
4: {text: "£5", fontFamily: "Courier, Arial, Helvetica, sans-serif"}
fontFamily: "Courier, Arial, Helvetica, sans-serif"
text: "£5"
1: [,…]
0: "<a style="margin-left: 8px; font-weight: bold; font-family: Courier, Arial, Helvetica, sans-serif;">TestMerchant2</a><br>
↵ <button class="seeMerchantButton" onclick="showMerchant('TestMerchant2');showProfile();" value="TestMerchant2">See merchant</button>"
1: "51.503393"
2: "-0.226599"
3: "info"
4: {text: "£3", fontFamily: "Courier, Arial, Helvetica, sans-serif"}
fontFamily: "Courier, Arial, Helvetica, sans-serif"
text: "£3"
我将地图放在用户位置的中心,如下所示:
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(function(position) {
initialLocation = new google.maps.LatLng(position.coords.latitude, position.coords.longitude);
map.setCenter(initialLocation);
});
}
我认为处理这个问题最有效的方法是过滤JSON,但我甚至不知道从哪里开始,因为我对谷歌地图API还不熟悉?我相信应用哈弗森公式的方法学可以在那里奏效,但我还是不确定这是怎么回事?
感谢您的帮助!
对此的回答非常简单,与评论中的建议一致。
提取当前用户的位置是这样做的
function showPosition(position) {
y.innerHTML = position.coords.latitude + "latlong" + position.coords.longitude;
然后,我将其传递给PHP脚本,并在脚本中使用haversine公式进行过滤,因为它的效率要高得多
我有一些谷歌地图折线。我试图在它们周围画两条折线,这样它们就形成了某种边界: 所以对于原始折线的每一个点,我计算边界线点,从原点算起25米: 在这个例子中,让我们省略折线的第一个和最后一个点。所以我总是看上一个点和下一个点,计算中心点的偏移量。
我如何根据坐标创建谷歌地图链接。他们的新基本共享网址包含许多参数,例如- https://www.google.com/maps/place/Vetlanda,瑞典/@57.4217311,15.0849255,13z/data=!3m1!4b1!4m2!3m1!1s0x465758d912d321b5:0x55675191e550be84?hl=en 有什么想法吗?不希望嵌入,而只是创建可以共享
我试图实现一个地图使用谷歌地图与离子。我遵循了这个链接中的编码,但我得到的只是一个空白屏幕,不知道我哪里出错了。请帮忙 这是控制器 这是html文件 请帮忙。
问题内容: 您如何计算Google Maps V3中两个标记之间的距离?(类似于inV2中的功能。) 谢谢.. 问题答案: 如果要自己计算,可以使用Haversine公式:
我知道周围也有类似的问题,但我无法找到一个可靠的答案,这是我的问题:有没有什么方法可以在没有谷歌地图引用的情况下将标记存储在ArrayList(或任何其他存储)中,然后简单地将它们添加到我的地图中? 背景:我有一个应用程序,目前有大约3500个标记。每个标记还有一个与之相关联的数据(布尔数组存储每个标记的数据,用于根据用户交互使它们可见/不可见)。目前,我使用扩展AsyncTask的类来获取这些标
我想更改Google Maps上选定的标记图标,因此我有以下代码: 在这一行,我从下面得到错误: 例外情况如下: