2015-06-25 3 views
0

Я пытаюсь показать маркер на карте с заданными координатами, а затем показать географическую привязку пользователей относительно маркера. Я могу показать как маркер, так и географическое местоположение (если доступно) на карте, но карта расположена только в геопозиции. Я думаю, мне нужно использовать fitBounds, чтобы соответствовать обоим маркерам, но я не могу заставить это работать. Может ли кто-нибудь помочь?Fit bounds Ошибка API Карт Google

function initialize() { 
    var latitude = 51.5039713; 
    var longitude = -0.114518; 
    var mapCanvas = document.getElementById('map-directions'); 
    var center = new google.maps.LatLng(latitude, longitude); 
    var zoom = 18;  
    var mapOptions = { 
     center: center, 
     zoom: zoom, 
     mapTypeId: google.maps.MapTypeId.ROADMAP, 
     scrollwheel: false 
       } 
    var map = new google.maps.Map(mapCanvas, mapOptions) 
    marker = new google.maps.Marker({ 
     map:map, 
     animation: google.maps.Animation.DROP, 
     position: center, 
     icon: '/pickup.png' 
    }); 

    // Try HTML5 geolocation 
     if(navigator.geolocation) { 
     navigator.geolocation.getCurrentPosition(function(position) { 

     var bounds = new google.maps.LatLngBounds(); 
     var pos = new google.maps.LatLng(position.coords.latitude, position.coords.longitude); 
     var geolocation = new google.maps.Marker({position: pos, map: map, title: 'Your geolocation', }); 

     bounds.extend(geolocation.getPosition());    
     map.fitBounds(bounds); 

     }, function() { 
      handleNoGeolocation(true); 
     }); 
     } else { 
     // Browser doesn't support Geolocation 
     handleNoGeolocation(false); 
     } 

}

ответ

1

инициализацию bounds с позицией в качестве аргумента:

var bounds = new google.maps.LatLngBounds(center); 

относящегося к комментарию:

иметь как маркер в окне просмотра, но 1 в центре вы могут:

  • создать circle` с:
  • pos как `центр
  • расстояние между pos и center в radius
  • вызова map.fitBounds() используя границы круга в качестве аргумента

    var pos  = new google.maps.LatLng(position.coords.latitude, 
              position.coords.longitude), 
        circle = new google.maps.Circle({center:pos, 
                radius: google.maps.geometry.spherical.computeDistanceBetween(pos,center)}), 
        geolocation = new google.maps.Marker({position: pos, map: map, title: 'Your geolocation'}); 
    
        map.fitBounds(circle.getBounds()); 
    
+0

Отлично! Благодаря! – user2753924

+0

Еще один вопрос - так теперь карта позиционируется с географическим расположением и маркером, но как я могу разместить карту, чтобы иметь геолокацию в центре? – user2753924

+0

См. Отредактированный ответ –

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