jQuery-UI-карта не отображается при переходе из другого HTML-файла - PullRequest
0 голосов
/ 03 февраля 2012

Это мой первый вопрос по stackoverflow, поэтому будьте осторожны :)

Я создаю мобильное веб-приложение с jQuery, jQuery mobile и плагином jQuery-ui-map.Карта отлично работает, когда я обновляю файл, в котором она должна отображаться (map.html), но при переходе по index.html она вообще не отображается.Консоль не показывает ошибок.Я попытался сделать $ ('# map_canvas'). Gmap ('refresh');на pageinit, но это тоже не работает.Кроме того, это портит панорамирование, когда я обновляю файл напрямую ...

Я также пробовал без предварительной выборки в меню нижнего колонтитула и с data-rel = "external" (что испортило мобильный стиль jquery)

Вот нижний колонтитул от index.html:

     <div data-role="footer" data-theme="a" data-position="fixed">
        <div data-role="navbar">
            <ul>
                <li><a data-transition="fade" class="txt_footer_href_home ui-btn-active" href="index.html" data-prefetch>Home</a></li>
                <li><a data-transition="fade" class="txt_footer_href_offers" href="offers.html" data-prefetch>Offers</a></li>
                <li><a data-transition="fade" class="txt_footer_href_store" href="store.html" data-prefetch>Store</a></li>
                <li><a data-transition="fade" class="txt_footer_href_map" href="map.html" data-prefetch>Map</a></li>
                <li><a data-transition="fade" class="txt_footer_href_more" href="more.html" data-prefetch>...</a></li>
            </ul>       
       </div>
    </div>

А вот код для карты:

$('#map_canvas').gmap({'maxZoom':17,'center': new google.maps.LatLng(center_latitude,center_longitude),'callback': function() {
    var self = this;
    // Get the current position
    self.getCurrentPosition(function(position, status) {
        // If we got the current position, add the marker
        if ( status === 'OK' ) {
            // Stor current position in a var
            var clientPosition = new google.maps.LatLng(position.coords.latitude, position.coords.longitude);
            // Add the current position marker
            self.addMarker({ id:'mark_pos','position': clientPosition, 'bounds': true})
            .click(function() {
                $('#map_canvas').gmap('openInfoWindow', { 'content': Lang.mapHtml.txt_marker_my_position_content }, this);
            });
            // Paint a blue cirecle where your position is
            self.addShape('Circle', { 
                'strokeWeight': 0, 
                'fillColor': "#008595", 
                'fillOpacity': 0.25, 
                'center': clientPosition, 
                'radius': 15, 
                'clickable': false 
            });
            // Bind direction marker button and show it
            $("#divBtnDirection").show();
            var that = this;
            $("#btn_directions").click(function() {
                that.displayDirections({ 'origin': clientPosition, 'destination':center_latitude+','+center_longitude , 'travelMode': google.maps.DirectionsTravelMode.DRIVING }, { 'panel': document.getElementById('directions') }, function(result, status) {
                if ( status === 'OK' ) {
                    $('#map_canvas').gmap('clear', 'markers');
                    $("#divBtnDirection").hide();
                    $("#directions").fadeIn(1000);

                }
            });  

            });             
    }
        // Add the shopping centers marker

    self.addMarker( { id:'mark_center', 'position': center_latitude+','+center_longitude, 'bounds': true }).click(function() {
                $('#map_canvas').gmap('openInfoWindow', { 'content': Lang.mapHtml.txt_marker_center_content }, this);
            });
    });   


}});

Сайт в настоящее время отображается здесь (на норвежском)

Спасибо!

1 Ответ

0 голосов
/ 03 февраля 2012

Прежде всего, добро пожаловать в Stackoverflow .. :) Убедитесь, что ваша функция вызывается во время навигации. Попробуйте добавить в функцию окно сообщения и проверьте.

А также попробуйте вызвать функцию map в главном разделе вашего

$(function(){
//your function call
});

Надеюсь, это поможет ..

...