![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 185 Pomógł: 10 Dołączył: 29.01.2008 Ostrzeżenie: (0%) ![]() ![]() |
Witam serdecznie.
Mam problem z Api google maps. Generalnie wszystko działa ... jak zwykle prawie:) Zasada prosta ... mapa pobiera miejsca w okolicy- nearbySearch Wyniki wyświetlane na mapie i w liście z boku. Kliknięcie w marker lub wynik na liście pokazuje szczegóły miejsca- standard i tu pojawia się "ale" Wyniki pojawiają się z paginacją, po 20 szt. Dodanie drugiej 20 powoduje, że wybrane miejsce na liście z pierwszej dwudziestki pokazuje błędne informacje. To co wyżej można zobaczyć tutaj: http://beta.targi-polska.pl/lok?type=1&...;long=19.993294 Kod js: Kod var map, service, placeList; var infowindow; var hostnameRegexp = new RegExp('^https?://.+?/'); var markers = []; var MARKER_PATH = 'http://www.targi-polska.pl/img/lodging_0star.png'; function initialize(lat,lon) { var pyrmont = new google.maps.LatLng(lat, lon); map = new google.maps.Map(document.getElementById('map-canvas'), { center: pyrmont, zoom: 12 }); var request = { location: pyrmont, radius: '10000', types: ['lodging'] }; infowindow = new google.maps.InfoWindow({content: document.getElementById('info-content')}); service = new google.maps.places.PlacesService(map); service.nearbySearch(request, callback); } function callback(results, status, pagination) { if (status == google.maps.places.PlacesServiceStatus.OK) { for (var i = 0; i < results.length; i++) { var markerIcon = MARKER_PATH; markers[i] = new google.maps.Marker({ position: results[i].geometry.location, animation: google.maps.Animation.DROP, icon: markerIcon }); markers[i].placeResult = results[i]; google.maps.event.addListener(markers[i], 'click', okno); createMarker(results[i],i); markers[i].setMap(map); } if (pagination.hasNextPage) { var moreButton = document.getElementById('moreButton'); moreButton.disabled = false; google.maps.event.addDomListenerOnce(moreButton, 'click', function() { moreButton.disabled = true; pagination.nextPage(); }); } } } var liczMiejsca=0; function createMarker(place,i) { liczMiejsca++; $('#ileMiejsc span.ile').html(liczMiejsca); var markerIcon = MARKER_PATH; var results = document.getElementById('resultLocation'); var tr = document.createElement('li'); tr.style.backgroundColor = (i % 2 == 0 ? '#F0F0F0' : '#FFFFFF'); tr.onclick = function() { google.maps.event.trigger(markers[i], 'click'); }; var name = document.createTextNode(place.name); tr.appendChild(name); results.appendChild(tr); } function okno() { var marker = this; console.log(marker); service.getDetails({placeId: marker.placeResult.place_id}, function(place, status) { if (status != google.maps.places.PlacesServiceStatus.OK) { return; } infowindow.open(map, marker); $('#info-content').css('display','block'); buildIWContent(place); }); } google.maps.event.addDomListener(window, 'load', initialize); function buildIWContent(place) { document.getElementById('iw-icon').innerHTML = '<img class="hotelIcon" ' + 'src="' + place.icon + '"/>'; document.getElementById('iw-url').innerHTML = '<b><a href="' + place.url + '">' + place.name + '</a></b>'; document.getElementById('iw-address').textContent = place.vicinity; if (place.formatted_phone_number) { document.getElementById('iw-phone-row').style.display = ''; document.getElementById('iw-phone').textContent = place.formatted_phone_number; } else { document.getElementById('iw-phone-row').style.display = 'none'; } if (place.rating) { var ratingHtml = ''; for (var i = 0; i < 5; i++) { if (place.rating < (i + 0.5)) { ratingHtml += '✩'; } else { ratingHtml += '✭'; } document.getElementById('iw-rating-row').style.display = ''; document.getElementById('iw-rating').innerHTML = ratingHtml; } } else { document.getElementById('iw-rating-row').style.display = 'none'; } if (place.website) { var fullUrl = place.website; var website = hostnameRegexp.exec(place.website); if (website == null) { website = 'http://' + place.website + '/'; fullUrl = website; } document.getElementById('iw-website-row').style.display = ''; document.getElementById('iw-website').textContent = website; } else { document.getElementById('iw-website-row').style.display = 'none'; } } function calcRoute(cel) { //var ladowanie = document.getElementById("ladowanie_mapy"); //ladowanie.style.display='block'; console.log(cel); var selectedMode = 'DRIVING'; var request = { origin: service.getPosition(), destination: cel, travelMode: google.maps.DirectionsTravelMode[selectedMode] }; directionsService.route(request, function(response, status) { if (status == google.maps.DirectionsStatus.OK) { //ladowanie.style.display='none'; //okno.close(map); directionsDisplay.setDirections(response); } }); service.setMap(null); } jQuery(document).ready(function() { $('.showList').click(function(){ $('#resultLocation').slideToggle("fast"); }); }); Nikt nie może pomóc? jakieś sugestie?? |
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 07:01 |