我正在进行车辆追踪项目,我从数据库中获取coordiantes,并在谷歌地图上显示。 这是我的代码..... !!
function get_coordinates(checkbox){
var v_id=checkbox.id;
if(checkbox.checked){
var hr = new XMLHttpRequest();
hr.open("POST", "fetch_coordinates.php", true);
hr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
hr.onreadystatechange = function() {
if(hr.readyState == 4 && hr.status == 200) {
var data = JSON.parse(hr.responseText);
var lat=data.loc.lat;
var lon=data.loc.lon;
addmarker(lat,lon,v_id);
}
}
hr.send("id="+v_id);
} else{
var mark = markers[v_id]; // find the marker by given id
mark.setMap(null);
delete markers[v_id];
}
}
function addmarker(lat,lon,v_id){
var marker = new google.maps.Marker({
id: v_id,
position: new google.maps.LatLng(lat, lon),
zoom: 8,
map: map,
title: 'Vehicle No: '+v_id,
icon: 'live.gif',
optimized:false
});
markers[v_id] = marker;
bounds.extend(new google.maps.LatLng(lat,lon));
// map.setOptions({center:new google.maps.LatLng(lat,lon),zoom:8});
map.fitBounds(bounds);
}
但问题是,有时我会得到距离道路1,2英寸的GPS坐标(可能是因为设备的精度较低或信号失真等) 我应该如何强制我的标记在路上自动调整?有没有办法,使用方向渲染或任何其他提示???请帮忙
答案 0 :(得分:0)
2017年,正确的方法是Roads API Snap to Roads服务。
您可以在
上阅读有关此网络服务的信息https://developers.google.com/maps/documentation/roads/snap
Google Maps Roads API最多可以在一条路线上收集100个GPS点,并返回一组类似的数据,这些点将被捕捉到车辆行驶的最可能的道路上。或者,您可以请求对点进行插值,从而生成一条平滑地遵循道路几何形状的路径。
答案 1 :(得分:0)
https://developers.google.com/maps/documentation/directions/intro
您可以使用所需的URL来获取json请求。
在“编码”部分中,您可以编写此代码以获取道路上的位置。
Marker liveloc;
JSONObject obj1=new JSONObject(s);
JSONArray arr1=obj1.getJSONArray("routes");
for (int i=0;i<arr1.length();i++){
JSONObject obj2=arr1.getJSONObject(i);
JSONArray arr2=obj2.getJSONArray("legs");
JSONObject obj3=arr2.getJSONObject(0);
JSONObject obj4=obj3.getJSONObject("start_location");
String k=obj4.getString("lat");
String k2=obj4.getString("lng");
double k3=Double.parseDouble(k);
double k4=Double.parseDouble(k2);
LatLng myloc=new LatLng(k3,k4);
if (liveloc !=null){
liveloc.remove();
}
liveloc=mMap.addMarker(new MarkerOptions().position(myloc));
}
您需要从json请求中获取第一个起始位置。
希望有帮助...