Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 21.05.2013, 22:37
Новичок на форуме
Отправить личное сообщение для stepandra Посмотреть профиль Найти все сообщения от stepandra
 
Регистрация: 21.05.2013
Сообщений: 7

Google Maps Api и Матрица маршрутов
у меня есть вот такой код, который выводит расстояние и время между любыми точками мира. Также там есть маркеры, которые делят расстояние на 10 участков. Мне надо найти время до каждого маркера с помощью еще одного запроса. Но вот как это сделать я не знаю. Прошу помощи. Вот код.
<!DOCTYPE html>
<html>
  <head>
    <title>Distance Matrix service</title>
    <script src="https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false"></script>
    <meta charset="utf-8">
    <style>
      html, body {
        height: 100%;
        margin: 0;
        padding: 0;
      }
 
      #map-canvas {
        height: 100%;
        width: 50%;
      }
      #content-pane {
        float:right;
        width:48%;
        padding-left: 2%;
      }
      #outputDiv {
        font-size: 11px;
      }
    </style>
    <script>
var map;
var geocoder;
var bounds = new google.maps.LatLngBounds();
var markersArray = [];
var waypts = [];
 
 
 
var destinationIcon = 'https://chart.googleapis.com/chart?chst=d_map_pin_letter&chld=D|FF0000|000000';
var originIcon = 'https://chart.googleapis.com/chart?chst=d_map_pin_letter&chld=O|FFFF00|000000';
var directionsDisplay;
var directionsDisplay1;
var directionsService = new google.maps.DirectionsService();
var directionsService1 = new google.maps.DirectionsService();
function initialize() {
  directionsDisplay = new google.maps.DirectionsRenderer();
  var opts = {
    center: new google.maps.LatLng(55.53, 9.4),
    zoom: 10,
    mapTypeId: google.maps.MapTypeId.ROADMAP
  };
  map = new google.maps.Map(document.getElementById('map-canvas'), opts);
   directionsDisplay.setMap(map);
  geocoder = new google.maps.Geocoder();
}
 
 
function calcRoute() {
  
  var start = document.getElementById('start').value;
  var end = document.getElementById('end').value;
  
  
  
 
  var request = {
      origin: start,
      destination: end,
     
     
      travelMode: google.maps.TravelMode.DRIVING
  };
  directionsService.route(request, function(response, status) {
    if (status == google.maps.DirectionsStatus.OK) {
      directionsDisplay.setDirections(response);
      var route = response.routes[0];
      var summaryPanel = document.getElementById('directions_panel');
      var f;
      var f1;
      summaryPanel.innerHTML = '';
 
      // For each route, display summary information.
      for (var i = 0; i < route.legs.length; i++) {
        f=(route.legs[i].end_location.lat()-route.legs[i].start_location.lat())/10 ;
        f1=(route.legs[i].end_location.lng()-route.legs[i].start_location.lng())/10;
                        summaryPanel.innerHTML +=' Координаты начала '+ route.legs[i].start_location + ' среднее ';
                        summaryPanel.innerHTML += f  + '<br>';
                        summaryPanel.innerHTML += f1  + '<br>';
                        summaryPanel.innerHTML += 'Время:'+route.legs[i].duration.text + '<br><br>';
                        
var markers = [];
for(var k=1; k<=9; ++k)
  markers[k-1] = new google.maps.Marker({
    position: new google.maps.LatLng(route.legs[i].start_location.lat()+f*k, route.legs[i].start_location.lng()+f1*k),
    icon: destinationIcon,
    map: map
  });
 
 
 
                       
                    
      
 
      
         
                    
      
 
      }  
    }
  });
}
 
 
function deleteOverlays() {
 
 
 
 
  for (var i = 0; i < markers.length; i++) {
    markers[i].setMap(null);
  }
  markers = [];
}
 
google.maps.event.addDomListener(window, 'load', initialize);
 
    </script>
  </head>
  <body>
    <div id="content-pane">
     
      <style>
      .outputDiv
      {
      font-size:35px;
      
      }
      
      </style>
     <div id="directions_panel" style="margin:20px;background-color:#FFEE77;"></div>
      <div id="directions_panel1" style="margin:20px;background-color:#FFEE77;"></div>
    <input type="text" name="start" id="start"    >
        
        <input type="text" name="end" id="end"  >
      <div id="outputDiv"></div>
 
      <input type="submit" onclick="calcRoute();">
       <input type="submit" onclick="calcRoute1();">
    </div>
    <div id="map-canvas"></div>
  </body>
</html>

Заранее спасибо за помощь!
Ответить с цитированием
  #2 (permalink)  
Старый 22.05.2013, 15:09
Аватар для deivan
Профессор
Отправить личное сообщение для deivan Посмотреть профиль Найти все сообщения от deivan
 
Регистрация: 02.08.2012
Сообщений: 293

f=(route.legs[i].end_location.lat()-route.legs[i].start_location.lat())/10 ;
f1=(route.legs[i].end_location.lng()-route.legs[i].start_location.lng())/10;


не нужно обращаться со сферическими координатами, как с декартовыми
Ответить с цитированием
  #3 (permalink)  
Старый 23.05.2013, 23:28
Новичок на форуме
Отправить личное сообщение для stepandra Посмотреть профиль Найти все сообщения от stepandra
 
Регистрация: 21.05.2013
Сообщений: 7

Все работает корректно. Мне нужно запустить directionService.Route() для каждого маркера, чтоб получить время до каждого из них. А вот как это сделать я и хочу узнать.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
google maps api gabatel Общие вопросы Javascript 0 27.06.2012 15:26
Как запустить модальное окно из информационного окна google maps? www123 jQuery 5 04.09.2011 23:38
JavaScript + Google Maps ahimaskrasavin Элементы интерфейса 5 20.06.2011 13:21
Приложение на API Google Maps tomAlba Работа 0 29.01.2011 15:52
google maps api v3 jqueru ui 4ydik jQuery 0 29.12.2010 10:51