나는 특정 기간 동안 영업 사원의 이동 경로를 추적해야하는 프로젝트에서 작업 중입니다 (n 일에 걸쳐 발생할 수 있음). 웹 서비스를 사용하여 데이터베이스에 저장하는 모바일 장치에서 위치를 가져옵니다.각 영업 사원을위한 Google지도에서 다른 경로를 표시하는 방법
이제 영업 사원을 선택하기위한 다중 선택 드롭 다운이 있습니다. 영업 사원 ID를 쉼표로 구분 된 값으로 전달하고 선택한 영업 사원의 위도와 경도를 데이터베이스에서 가져옵니다.
코드는 다음과 같습니다. 나는 페이지의 소스의 자바 스크립트 마커 배열을 등록 된
IList<RadComboBoxItem> Values = rcbSalesPersons.CheckedItems;
string Ids = String.Join(",", rcbSalesPersons.Items.Where(i => i.Checked).Select(i => i.Value).ToList());
List<SalespersonSpatialInfo> lstSpatialInfo = SalespersonSpatialInfo.getSpatialInfo(Ids, Session["StoreID"].ToString(),RadDatePickerFrom.SelectedDate.Value, RadDatePickerTo.SelectedDate.Value);
string jsonString;
if (lstSpatialInfo.Count > 0)
{
jsonString = JsonSerializer<List<SalespersonSpatialInfo>>(lstSpatialInfo);
ScriptManager.RegisterArrayDeclaration(Page, "markers", jsonString);
ScriptManager.RegisterStartupScript(Page, Page.GetType(), Guid.NewGuid().ToString(), "GoogleMap();", true);
}
, 지금은 내가 JSON
다음 얻을지도에 점을 음모하고 그들에게function GoogleMap() {
var mapOptions = {
center: new google.maps.LatLng(markers[0][0].Latitude, markers[0][0].Longitude),
zoom: 10,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
var map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions);
var infoWindow = new google.maps.InfoWindow();
var lat_lng = new Array();
var latlngbounds = new google.maps.LatLngBounds();
for (i = 0; i < markers[0].length; i++) {
var data = markers[0][i];
var myLatlng = new google.maps.LatLng(data.Latitude, data.Longitude);
lat_lng.push(myLatlng);
var marker = new google.maps.Marker({
position: myLatlng,
map: map
});
latlngbounds.extend(marker.position);
(function (marker, data) {
google.maps.event.addListener(marker, "click", function (e) {
infoWindow.setContent(data.description);
infoWindow.open(map, marker);
});
})(marker, data);
}
map.setCenter(latlngbounds.getCenter());
map.fitBounds(latlngbounds);
//***********ROUTING****************//
//Initialize the Path Array
var path = new google.maps.MVCArray();
debugger;
//Initialize the Direction Service
var service = new google.maps.DirectionsService();
//Set the Path Stroke Color
var poly = new google.maps.Polyline({ map: map, strokeColor: '#489615' });
//Loop and Draw Path Route between the Points on MAP
for (var i = 0; i < lat_lng.length; i++) {
if ((i + 1) <= lat_lng.length) {
var src = lat_lng[i];
var des = lat_lng[i + 1];
path.push(src);
poly.setPath(path);
service.route({
origin: src,
destination: des,
travelMode: google.maps.DirectionsTravelMode.TRANSIT
}, function (result, status) {
if (status == google.maps.DirectionsStatus.OK) {
for (var i = 0, len = result.routes[0].overview_path.length; i < len; i++) {
path.push(result.routes[0].overview_path[i]);
}
}
});
}
}
}
가입 자바 스크립트 함수를 다음을 사용
[
{
"DeviceID": null,
"ID_SalesRep": 58,
"Latitude": 22.693519,
"LocationID": 1,
"Longitude": 75.919796,
"StoreID": "xyz",
"TrackingTime": "/Date(1418246100000+0530)/"
},
{
"DeviceID": null,
"ID_SalesRep": 58,
"Latitude": 22.701211,
"LocationID": 2,
"Longitude": 75.926846,
"StoreID": "xyz",
"TrackingTime": "/Date(1418246100000+0530)/"
},
{
"DeviceID": null,
"ID_SalesRep": 59,
"Latitude": 22.750948,
"LocationID": 3,
"Longitude": 75.895411,
"StoreID": "xyz",
"TrackingTime": "/Date(1418246100000+0530)/"
},
{
"DeviceID": null,
"ID_SalesRep": 58,
"Latitude": 22.705804,
"LocationID": 4,
"Longitude": 75.905024,
"StoreID": "xyz",
"TrackingTime": "/Date(1418246100000+0530)/"
},
{
"DeviceID": null,
"ID_SalesRep": 58,
"Latitude": 22.711267,
"LocationID": 5,
"Longitude": 75.883073,
"StoreID": "xyz",
"TrackingTime": "/Date(1418246100000+0530)/"
},
{
"DeviceID": null,
"ID_SalesRep": 58,
"Latitude": 22.718155,
"LocationID": 6,
"Longitude": 75.883802,
"StoreID": "xyz",
"TrackingTime": "/Date(1418246100000+0530)/"
},
{
"DeviceID": null,
"ID_SalesRep": 59,
"Latitude": 22.747032,
"LocationID": 7,
"Longitude": 75.883727,
"StoreID": "xyz",
"TrackingTime": "/Date(1418246100000+0530)/"
},
{
"DeviceID": null,
"ID_SalesRep": 58,
"Latitude": 22.726512,
"LocationID": 8,
"Longitude": 75.880881,
"StoreID": "xyz",
"TrackingTime": "/Date(1418246100000+0530)/"
},
{
"DeviceID": null,
"ID_SalesRep": 59,
"Latitude": 22.718927,
"LocationID": 9,
"Longitude": 75.856036,
"StoreID": "xyz",
"TrackingTime": "/Date(1418246100000+0530)/"
}
]
마침내 다른 영업 사원에 대한 마커와 폴리 라인의 색상을 변경해야합니다.
이제 문제는 다른 영업 사원에 대해 다른 경로를 표시해야하지만 두 경로 모두 영업 사원을위한 하나의 경로를 보여주는 것입니다. 필요한 경우 설명을 요청하십시오.
"다른 영업 사원에게 다른 경로를 보여줄 필요가 있지만 경로를 보여줍니다." 어떤 경로로 표시됩니까? – geocodezip
@geocodezip 결론을 봅니다. – Devjosh
영업 사원이 포인트를 구분하는 코드는 어디에 있습니까? – geocodezip