2015-10-06 118 views
1

我很难在Google地图中合并地理位置和海拔。 我需要显示当前位置的高程。看来pos变量中的值不等于event.latLng。如何在Google地图中合并地理位置和海拔

Google Maps Elevation

这里是我的代码试图地理位置和海拔

function initMap() { 


var map = new google.maps.Map(document.getElementById('map'), { 
    center: {lat: -34.397, lng: 150.644}, 
    // disableDefaultUI: true, 
    mapTypeId: google.maps.MapTypeId.SATELLITE, 
    zoom: 20 
    }); 
    var elevator = new google.maps.ElevationService; 
    var infoWindow = new google.maps.InfoWindow({map: map}); 

    // Try HTML5 geolocation. 
    if (navigator.geolocation) { 
    navigator.geolocation.getCurrentPosition(function(position) { 
     var pos = { 
     lat: position.coords.latitude, 
     lng: position.coords.longitude 
     }; 
     displayLocationElevation(pos, elevator, infowindow); 
    }, function() { 
     handleLocationError(true, infoWindow, map.getCenter()); 
    }); 
    } else { 
    // Browser doesn't support Geolocation 
    handleLocationError(false, infoWindow, map.getCenter()); 
    } 
} 

function handleLocationError(browserHasGeolocation, infoWindow, pos) { 
    infoWindow.setPosition(pos); 
    infoWindow.setContent(browserHasGeolocation ? 
         'Error: The Geolocation service failed.' : 
         'Error: Your browser doesn\'t support geolocation.'); 
} 

function displayLocationElevation(location, elevator, infowindow) { 
    map.setCenter(location); 
    Initiate the location request 
    elevator.getElevationForLocations({ 
    'locations': [location] 
    }, function(results, status) { 
    infowindow.setPosition(location); 
    if (status === google.maps.ElevationStatus.OK) { 
     // Retrieve the first result 
     if (results[0]) { 
     // Open the infowindow indicating the elevation at the clicked position. 
     infowindow.setContent('The elevation at this point <br>is ' + 
      results[0].elevation + ' meters.'); 
     } else { 
     infowindow.setContent('No results found'); 
     } 
    } else { 
     infowindow.setContent('Elevation service failed due to: ' + status); 
    } 
    }); 
} 

更新结合起来:看来,POS变量和event.latLng具有不同的值。 pos产生[Object object],而event.latLng产生(lat值,long value)。虽然使用pos.lat产生的纬度与pos.long的经度相同。仍试图找出这个...

回答

1

好吧,我明白了!这里是代码:

function initMap() { 
    var map = new google.maps.Map(document.getElementById('map'), { 
    center: {lat: -34.397, lng: 150.644}, 
    // disableDefaultUI: true, 
    mapTypeId: google.maps.MapTypeId.SATELLITE, 
    zoom: 20 
    }); 
    var elevator = new google.maps.ElevationService; 
    var infoWindow = new google.maps.InfoWindow({map: map}); 

    // Try HTML5 geolocation. 
    if (navigator.geolocation) { 
    navigator.geolocation.getCurrentPosition(function(position) { 
     var pos = { 
     lat: position.coords.latitude, 
     lng: position.coords.longitude 
     }; 
     map.setCenter(pos); 
     displayLocationElevation(map.getCenter(), elevator, infoWindow); 
    }, function() { 
     handleLocationError(true, infoWindow, map.getCenter()); 
    }); 
    } else { 
    // Browser doesn't support Geolocation 
    handleLocationError(false, infoWindow, map.getCenter()); 
    } 
} 

function handleLocationError(browserHasGeolocation, infoWindow, pos) { 
    infoWindow.setPosition(pos); 
    infoWindow.setContent(browserHasGeolocation ? 
         'Error: The Geolocation service failed.' : 
         'Error: Your browser doesn\'t support geolocation.'); 
} 

function displayLocationElevation(location, elevator, infoWindow) { 
    elevator.getElevationForLocations({ 
    'locations': [location] 
    }, function(results, status) { 
    infoWindow.setPosition(location); 
    if (status === google.maps.ElevationStatus.OK) { 
     if (results[0]) { 
     infoWindow.setContent('The elevation at this point <br>is ' + 
      results[0].elevation + ' meters in ' + location); 
     } else { 
     infoWindow.setContent('No results found'); 
     } 
    } else { 
     infoWindow.setContent('Elevation service failed due to: ' + status); 
    } 
    }); 
} 

希望它对别人有帮助! :)