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??