2012-10-16 124 views
0

我想在下面的脚本中的用户当前位置设置一个标记。使用Google Maps API在用户当前位置设置标记?

任何人都可以提供正确的代码,实际上使用这个脚本?

我尝试了一些Google文档,没有任何运气。

THANKS

<html> 
    <head> 
    <meta name="viewport" content="initial-scale=1.0, user-scalable=no"/> 
    <script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script> 
    <script type="text/javascript"> 

    var showPosition = function (position) { 
    var userLatLng = new google.maps.LatLng(position.coords.latitude, position.coords.longitude); 
    // Do whatever you want with userLatLng. 
    } 

    navigator.geolocation.getCurrentPosition(showPosition); 

    var directionDisplay; 
    var map; 


function initialize() { 
    directionsDisplay = new google.maps.DirectionsRenderer(); 
    var copenhagen = new google.maps.LatLng(55.6771, 12.5704); 
    var myOptions = { 
     zoom:12, 
     mapTypeId: google.maps.MapTypeId.ROADMAP, 
     center: copenhagen 
    } 

    map = new google.maps.Map(document.getElementById("map_canvas"), myOptions); 
    directionsDisplay.setMap(map); 
    } 


    var directionsService = new google.maps.DirectionsService(); 



    function calcRoute() { 
    var start = document.getElementById("start").value; 
    var end = document.getElementById("end").value; 
    var distanceInput = document.getElementById("distance"); 

    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); 
      distanceInput.value = response.routes[0].legs[0].distance.value/1000; 
     } 
    }); 
    } 


    </script> 

    <title>Distance Calculator</title> 

    <style type="text/css"> 

      body { 
       font-family:Helvetica, Arial; 
      } 
      #map_canvas { 
       height: 50%; 
      } 
    </style> 
    </head> 
    <body> 

    <body onload="initialize()"> 
    <p>Enter your location and desired destination to calculate the distance</p> 
     <div> 
      <p> 
       <label for="start">Start: </label> 
       <input type="text" name="start" id="start" /><br /> 

       <label for="end">End:</label> 
       <input type="text" name="end" id="end" /><br /> 

       <input type="submit" value="Calculate Route" onclick="calcRoute()" /> 
      </p> 
      <p> 
       <label for="distance">Distance (km): </label> 
       <input type="text" name="distance" id="distance" readonly="true" /> 
      </p> 
     </div> 
     <div id="map_canvas"></div> 
    </body> 
</html> 

回答

0

你可以使用HTML5中的地理位置功能,就像您尝试过的那样,但是您可以以确保您在地图初始化之前不要求地理定位。因此,请将您的电话转到navigator.geolocation.getCurrentPosition(showPosition);,直到您的initialize()功能结束。

此外,你需要创建一个新标记为用户的位置,并在地图分配给该标记:

var showPosition = function (position) { 
    var userLatLng = new google.maps.LatLng(position.coords.latitude, position.coords.longitude); 
    // Do whatever you want with userLatLng. 
    var marker = new google.maps.Marker({ 
     position: userLatLng, 
     title: 'Your Location', 
     map: map 
    }); 
} 
+0

终于来了!非常感谢你! 我不知道这是否太复杂,但可以使用当前位置作为距离计算器的起点吗? – user1749428

+0

当然,你会让该位置成为方向查询的来源。附:如果此答案解决了您的问题,请将其选为正确答案。 – JasonWyatt

+0

你能告诉我在哪里我必须改变脚本来做到这一点? – user1749428

相关问题