2012-12-27 1 views
0

내가하려는 것은 Geolocation API를 사용하여 현재 위치를 찾은 다음 Google 장소를 추가하여 내 주변을 표시하는 것입니다. 그러나 나는 지금까지 무엇을 단지 당신이 피어 몬트을 볼 수 있듯이Geolocation with PlacesServices

<script> 
    var map; 
    var infowindow; 

    function initialize() { 
    var pyrmont = new google.maps.LatLng(-33.8665433, 151.1956316); 

    map = new google.maps.Map(document.getElementById('map'), { 
     mapTypeId: google.maps.MapTypeId.ROADMAP, 
     center: pyrmont, 
     zoom: 15 
    }); 

    var request = { 
     location: pyrmont, 
     radius: 500, 
     types: ['store'] 
    }; 
    infowindow = new google.maps.InfoWindow(); 
    var service = new google.maps.places.PlacesService(map); 
    service.nearbySearch(request, callback); 
    } 

    function callback(results, status) { 
    if (status == google.maps.places.PlacesServiceStatus.OK) { 
     for (var i = 0; i < results.length; i++) { 
     createMarker(results[i]); 
     } 
    } 
    } 

    function createMarker(place) { 
    var placeLoc = place.geometry.location; 
    var marker = new google.maps.Marker({ 
     map: map, 
     position: place.geometry.location 
    }); 

    google.maps.event.addListener(marker, 'click', function() { 
     infowindow.setContent(place.name); 
     infowindow.open(map, this); 
    }); 
    } 

    google.maps.event.addDomListener(window, 'load', initialize); 
</script> 

... 특정 위치를 반환 - 나에게 위도 및 길이를 제공하지만, 나는이 사용자의 현재 위치로 교체하고 싶습니다. 그래서 나는 그들이 어디에 있는지 알게하고 그들에게 상점을 줄 수 있습니다. 나는 이것을하려고 할 때 빈 그림을 그려 둡니다. 이전에 geolocation을 수행했습니다.

new google.maps.LatLng(position.coords.latitude, position.coords.longitude); 

그러나이 var을 lat 긴 섹션에서 사용하면 나는 정말 열정적 인 오류가 발생합니다. 사전에 도움을 주셔서 감사합니다.

답변

0

좋아이는 않았다

<script> 
var map; 

      function initialize() { 
        var mapOptions = { 
           
        }; 
        map = new google.maps.Map(document.getElementById('contact-map'),{ 
    zoom: 15, 
    mapTypeId: google.maps.MapTypeId.ROADMAP    
        }); 

        // Try HTML5 geolocation 
        if(navigator.geolocation) { 
          navigator.geolocation.getCurrentPosition(function(position) { 
            var pos = new google.maps.LatLng(position.coords.latitude, 
                                             position.coords.longitude); 

            var request = { 
          location: pos, 
          radius: 500, 
          types: ['store'] 
        }; 
             
            var marker = new google.maps.MarkerImage('../img/layout/marker.png'); 
             
            var infowindow = new google.maps.InfoWindow({ 
              map: map, 
              position: pos, 
              icon: marker, 
              content: 'youre here' 
            }); 
            var service = new google.maps.places.PlacesService(map); 
            service.nearbySearch(request, callback);             
             
            function callback(results, status) { 
        if (status == google.maps.places.PlacesServiceStatus.OK) { 
          for (var i = 0; i < results.length; i++) { 
            createMarker(results[i]); 
          } 
        } 
      } 
       
      function createMarker(place) { 
        var placeLoc = place.geometry.location; 
        var marker = new google.maps.Marker({ 
          map: map, 
          position: place.geometry.location 
        }); 
      google.maps.event.addListener(marker, 'click', function() { 
      infowindow.setContent(place.name); 
      infowindow.open(map, this); 
  }); 
  } 
             
            map.setCenter(pos); 
          }, function() { 
            handleNoGeolocation(true); 
          }); 
        } else { 
          // Browser doesn't support Geolocation 
          handleNoGeolocation(false); 
        } 
      } 

      function handleNoGeolocation(errorFlag) { 
        if (errorFlag) { 
          var content = 'Error: The Geolocation service failed.'; 
        } else { 
          var content = 'Error: Your browser doesn\'t support geolocation.'; 
        } 

        var options = { 
          map: map, 
          position: new google.maps.LatLng(60, 105), 
          content: content 
        }; 

        var infowindow = new google.maps.InfoWindow(options); 
        map.setCenter(options.position); 
      } 

      google.maps.event.addDomListener(window, 'load', initialize); 
    </script>