2013-12-22 7 views
4

Здесь у меня есть код, который работает хорошо, так что здесь просто Google Адресов код, который показывает мне места в зависимости от местоположения и добавить метку на каждый маркер так:Как получить часы из API Google Адресов

http://jsbin.com/UqafeCI/4/edit - кОД и DEMO

Теперь я хочу, чтобы в этикеточном время шоу открытия, так что я добавить в мой код:

if (!!place.opening_hours.periods[1].open.time) open = place.opening_hours.periods[1].open.time; 

и теперь мой код выглядит следующим образом:

google.maps.event.addListener(searchBox, 'places_changed', function() { 
    var places = searchBox.getPlaces(); 

    for (var i = 0, marker; marker = markers[i]; i++) { 
     marker.setMap(null); 
    } 

    // For each place, get the icon, place name, and location. 
    markers = []; 
    var bounds = new google.maps.LatLngBounds(); 
    for (var i = 0, place; place = places[i]; i++) { 
     var image = { 
     url: place.icon, 
     size: new google.maps.Size(71, 71), 
     origin: new google.maps.Point(0, 0), 
     anchor: new google.maps.Point(17, 34), 
     scaledSize: new google.maps.Size(25, 25) 
     }; 

     //THIS CODE I ADD TO PREVIOUS CODE THAT WORK, so if there is open time to show in label 
     var open = 'No work time'; 
    if (!!place.opening_hours.periods[1].open.time) open = place.opening_hours.periods[1].open.time; 

     // Create a marker for each place. 
    var marker = new MarkerWithLabel({ 
     map: map, 
     icon: image, 
     title: place.name, 
     position: place.geometry.location, 
     labelContent: open, 
     labelClass: "labels", // the CSS class for the label 
     labelStyle: {opacity: 0.75}, 
       labelAnchor: new google.maps.Point(22, 0) 
     }); 

     markers.push(marker); 

     bounds.extend(place.geometry.location); 
    } 

    map.fitBounds(bounds); 
    }); 

Так как я могу показать время открытия объекта на этикетке, если существует время ???

UPDATE:

Я пытаюсь добавить запрос и service.getDetails функции, но я снова не могу получить opening_time:

КОД:

google.maps.event.addListener(searchBox, 'places_changed', function() { 
    var places = searchBox.getPlaces(); 


    for (var i = 0, marker; marker = markers[i]; i++) { 
     marker.setMap(null); 
    } 

    // For each place, get the icon, place name, and location. 
    markers = []; 
    var bounds = new google.maps.LatLngBounds(); 
    for (var i = 0, place; place = places[i]; i++) { 
     var image = { 
     url: place.icon, 
     size: new google.maps.Size(71, 71), 
     origin: new google.maps.Point(0, 0), 
     anchor: new google.maps.Point(17, 34), 
     scaledSize: new google.maps.Size(25, 25) 
     }; 
     var request = { 
      reference: place.reference 
    }; 
     service.getDetails(request, function(place, status) { 

     var open = null; 
     try{ 
    open = place.opening_hours.periods[1].open.time; 
} 
catch(e){ 
    open='No work time'; 
} 
     var otvoreno = place.openNow+"</br>"+place.name; 

     // Create a marker for each place. 
    var marker = new MarkerWithLabel({ 
     map: map, 
     icon: image, 
     title: place.name, 
     position: place.geometry.location, 
     labelContent: open, 
     labelClass: "labels", // the CSS class for the label 
     labelStyle: {opacity: 0.75}, 
       labelAnchor: new google.maps.Point(22, 0) 
     }); 
    }); 
     markers.push(marker); 

     bounds.extend(place.geometry.location); 

    } 

    map.fitBounds(bounds); 
    }); 
+0

КОДА обновления: http://jsbin.com/IcIwIpUm/3/edit – MikiMrki

ответ

8

Используйте примерки всеобъемлющего заявление:

try{ 
    open = place.opening_hours.periods[1].open.time; 
} 
catch(e){ 
    open='No work time'; 
} 

... в противном случае вы получите п ошибка при выполнении любого из следующих неопределен:

  • place.opening_hours
  • place.opening_hours.periods
  • place.opening_hours.periods[1]
  • place.opening_hours.periods[1].open

Но тем не менее, документация, кажется, вводит в заблуждение, это предполагает, что возвращаемые результаты placeDetails. Но это не факт, что вам нужен дополнительный запрос для каждого места в request the placeDetails (который будет содержать opening_hours.periods, если таковой имеется)

+0

да, пожалуйста, обновите мой jsbin. благодаря! http://jsbin.com/UqafeCI/4/edit – MikiMrki

+4

Это еще не рождество;) –

+0

, но его на 2 дня, так что это будет мой рождественский подарок: D СПАСИБО! пожалуйста, обновите функцию placeDetails – MikiMrki

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