有几天我正在努力解决这个问题我无法解决。
我有一个Android应用程序向我发送一定数量的坐标;每个坐标都有一个与之相关的值,我需要做的是在地图上报告这些点,根据这个值可视化不同的标记颜色。
我试图通过谷歌地图API来实现。
我将所有点都存储在融合表中,并且我能够构建一个具有适当风格的图层,但问题是这些点在地图上的真实街道上并不对应,显然他们必须这样做
我尝试的是使用DirectionsService,如下所示:(google maps geocoder - point on a street)我知道gps不能那么精确。
我现在尝试的方法是将我的所有点放在一个数组中(不使用融合表层,因为我不知道如何连接两个tehings)然后为每个点向DirectionsService发出请求(我知道)它非常慢,但是现在我需要它是精确的,如果你有建议它被很好地接受了)但是这样只有某些点被很好地表示,而其他点有来自服务的空响应并且根本没有报告。
有什么建议吗?
var directionsDisplay;
var directionsService = new google.maps.DirectionsService();
var map;
function initialize() {
directionsDisplay = new google.maps.DirectionsRenderer();
var urbino = new google.maps.LatLng(43.72333292, 12.63552457);
var mapOptions = {
zoom:10,
center: urbino
}
map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions);
directionsDisplay.setMap(map);
}
function calcRoute() {
var start, end;
var waypts = [new google.maps.LatLng(43.72333292,12.63552457), new google.maps.LatLng(43.72333292,12.63552457), new google.maps.LatLng(43.72333292,12.63552457), new google.maps.LatLng(43.72333292,12.63552457)............];
console.log(waypts.length);
$.each(waypts, function(index){
if(index < waypts.length -1){
var request = {
origin:waypts[index],
destination:waypts[index+1],
travelMode: google.maps.TravelMode.DRIVING
};
directionsService.route(request, function(response, status) {
console.log(index);
console.log(response);
if (status == google.maps.DirectionsStatus.OK) {
directionsDisplay.setDirections(response);
console.log('ok');
}
else{
console.log('non ok');
}
});
}
});
}
google.maps.event.addDomListener(window, 'load', initialize);
$(document).ready(function(){
calcRoute();
});
修改
说出提供的分数是完全错误的(但这不是我的工作,所以我只是把它们拿走了),现在有了新的点数,即使只有一些路标,服务也能正常工作。 该问题仍然部分地存在,即使更小,因此从融合台提供的点不是精确地在所有路线上的街道上。所以我仍然需要弄清楚如何将碎片放在一起,这意味着使用directionsService的路径,使用融合表层设置样式。 :)
答案 0 :(得分:0)
使用过的点是完全错误的,现在有了正确的坐标集,融合表提供的路径几乎是完美的,在所有的街道上都很长,即使街道上还有一些不是真的。
所以,我现在需要弄清楚的是如何将fusionTable图层(样式)与directionsService(精确)放在一起。