Как добавить заголовок в маркер на карте Google v2? - PullRequest
0 голосов
/ 30 марта 2011

Привет всем, здесь я указываю массив значений в Google Map. Я закончил отмечать эти последние, но не смог указать заголовок маркера? Итак, я поставил GEvent, т.е. addlistener, который отображает только один заголовок.

for (var i = 0; i < g_listOfBusinessDetails.length ;i++) 
    {
        point = new GLatLng(g_listOfBusinessDetails[i].mapLocation.latitude, g_listOfBusinessDetails[i].mapLocation.longitude);
        map.setCenter(point, 2);
        var marker = new GMarker(point);
        map.addOverlay(marker);
        GEvent.addListener(marker, "click", function() {
            marker.openInfoWindowHtml(g_listOfBusinessDetails[i].name);
        });

    }

1 Ответ

1 голос
/ 09 апреля 2011

Это очень распространенная проблема JavaScript - вы можете увидеть похожий вопрос, заданный здесь , а также есть хорошее сообщение в блоге , объясняющее это. Проблема в том, что переменные marker и i, а также g_listOfBusinessDetails, которые вы используете внутри функции, не привязаны к значениям, которые они имели при вызове GEvent.addListener. В случае события click функция запускается с любыми значениями, которые они имеют в данный момент времени (например, i предположительно g_listOfBusinessDetails.length).

Вы можете связать их по мере необходимости, вызвав фабричную функцию, которая создает функцию-обработчик для вашего маркера и заголовка следующим образом:

GEvent.addListener(marker, "click", (function(myMarker, title) {
    return function() {
        myMarker.openInfoWindowHtml(title);
    }
})(marker, g_listOfBusinessDetails[i].name));
...