2014-01-22 2 views
0

Я разработчик PHP с небольшим знанием javascript, но я пытаюсь совместить геокодирование и код JavaScript в JavaScript google. Геокодирование с помощью PHP не является вариантом из-за ограничения на стороне сервера. Это то, что я до сих пор:.Сочетание геокодирования и указаний Google

<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script> 

<script type="text/javascript"> 


$(document).ready(function(){ 
    initialize(); 
}); 


var geocoder = new google.maps.Geocoder(); 
var address = "hoefslag 41, 's gravenmoer"; 

geocoder.geocode({ 'address': address}, function(results, status) { 

    if (status == google.maps.GeocoderStatus.OK) { 
    var latitude = results[0].geometry.location.lat(); 
    var longitude = results[0].geometry.location.lng(); 

      } 

    }); 




    var directionDisplay; 
    var directionsService = new google.maps.DirectionsService(); 
    function initialize() { 
    var latlng = new google.maps.LatLng(51.764696,5.526042); 
    directionsDisplay = new google.maps.DirectionsRenderer(); 
    var myOptions = { 
     zoom: 14, 
     center: latlng, 
     mapTypeId: google.maps.MapTypeId.ROADMAP, 
     mapTypeControl: false 
    }; 
    var map = new google.maps.Map(document.getElementById("map_canvas"),myOptions); 
    directionsDisplay.setMap(map); 
    directionsDisplay.setPanel(document.getElementById("directionsPanel")); 
    var marker = new google.maps.Marker({ 
     position: latlng, 
     map: map, 
     title:"My location" 
    }); 
    } 





    function calcRoute() { 
    var start = document.getElementById("routeStart").value; 
    var end = "51.764696,5.526042"; 
    var request = { 
     origin:start, 
     destination:end, 
     travelMode: google.maps.DirectionsTravelMode.DRIVING 
    }; 
    directionsService.route(request, function(response, status) { 
     if (status == google.maps.DirectionsStatus.OK) { 
     directionsDisplay.setDirections(response); 
     } 
    }); 
    } 




</script> 


----- HTML for the map: 

<div id="map_canvas" style="width:710px; height:300px"></div> 
    <form action="" onsubmit="calcRoute();return false;" id="routeForm"> 
     <input type="text" id="routeStart" value=""> 
     <input type="submit" value="Route plannen"> 
    </form> 
<div id="directionsPanel"></div> 

широта и долгота рассчитываются правильно с адреса я вошел (проверяемого, отображая две переменные Однако, независимо от того, что я стараюсь, я не могу показаться, чтобы включить .? эти две переменные внутри этих двух функций под кодом геокодирования, без разбивки «рассчитать маршрут» функциональность Любые идеи

+0

, не нарушая средств –

+0

https:.? // StackOverflow .com/вопросы/21272785/переменная -not-pass-value-outside-function/21273366 – Andy

+0

Ну, я могу получить переменные в первой функции после геокодирования, поэтому правый адрес отображается на карте, но всякий раз, когда я это делаю, я не могу вычислить маршрут. Кнопки не отвечают и не выполняют функцию. – user2704687

ответ

1

Просто попробуйте с этим

<!doctype html> 
    <html lang="en"> 
    <head> 
    <meta charset="utf-8"> 
    <title>Google Map Address</title> 
    <script src="http://code.jquery.com/jquery-latest.min.js" type="text/javascript"></script> 
    <script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script> 

    <script type="text/javascript"> 


    $(document).ready(function(){ 
    // initialize(); 
    }); 


    var geocoder = new google.maps.Geocoder(); 
    var address = "hoefslag 41, 's gravenmoer"; 

    geocoder.geocode({ 'address': address}, function(results, status) { 

     if (status == google.maps.GeocoderStatus.OK) { 
     var latitude = results[0].geometry.location.lat(); 
     var longitude = results[0].geometry.location.lng(); 

     alert("lat.."+latitude+"..&.."+longitude); 
     initialize(latitude,longitude); 
     $("#latlong").val(latitude+","+longitude); 
       } 

     }); 




     var directionDisplay; 
     var directionsService = new google.maps.DirectionsService(); 
     function initialize(latitude,longitude) { 
     var latlng = new google.maps.LatLng(latitude,longitude); 
     directionsDisplay = new google.maps.DirectionsRenderer(); 
     var myOptions = { 
      zoom: 14, 
      center: latlng, 
      mapTypeId: google.maps.MapTypeId.ROADMAP, 
      mapTypeControl: false 
     }; 
     var map = new google.maps.Map(document.getElementById("map_canvas"),myOptions); 
     directionsDisplay.setMap(map); 
     directionsDisplay.setPanel(document.getElementById("directionsPanel")); 
     var marker = new google.maps.Marker({ 
      position: latlng, 
      map: map, 
      title:"My location" 
     }); 
     } 





     function calcRoute() { 

     var start = document.getElementById("routeStart").value; 
     var end = $("#latlong").val(); 

     var request = { 
      origin:start, 
      destination:end, 
      travelMode: google.maps.DirectionsTravelMode.DRIVING 
     }; 
     directionsService.route(request, function(response, status) { 
      if (status == google.maps.DirectionsStatus.OK) { 
      directionsDisplay.setDirections(response); 
      } 
     }); 
     alert("Start.."+start+"..End.."+end); 
     } 




</script> 

    </head> 
    <body> 

    <h2>Google Map Address</h2> 

    <div id="map_canvas" style="width:710px; height:300px"></div> 
    <!--<form action="" onsubmit="calcRoute();return false;" id="routeForm">--> 
    <form action="" id="routeForm"> 
     <input type="text" id="routeStart" value=""> 
     <input type="button" value="Route plannen" onClick="calcRoute();"> 
     <input type="hidden" name="latlong" id="latlong"/> 
    </form> 
    <div id="directionsPanel"></div> 

    </body> 
    </html> 
+0

Дженсон, я не уверен, что вы поняли мою проблему. В функции intialize и в функции calcroute имеются две координаты. Функция геокодирования должна вычислять эти координаты, и результат функции геокодирования должен быть включен в нижние две функции. – user2704687

+0

@ user2704687 Координаты вы имели в виду широту и долготу? –

+0

Да, '51 .764696,5.526042 'должен быть заменен результатом функции геокодирования. Адрес вводится в функцию геокодирования, эта функция вычисляет широту и долготу, эти два числа включены в две нижние функции. Это идея. – user2704687

Смежные вопросы