Периодическое падение приложения: JQM Beta 3, Google Maps v3 и MVC - PullRequest
0 голосов
/ 15 сентября 2011

Иногда это работает .... иногда это не так. Очень странно.

Я написал мобильное приложение JQuery, и одна часть приложения получает доступ к Google Maps, чтобы отобразить карту для определенного выбранного пользователем местоположения. Этот код выполняется правильно примерно в 50% случаев. Прекрасно работает ... как я и хочу. Однако в остальные 50% случаев происходит сбой приложения. Под падением я подразумеваю, что приложение внезапно «останавливается», а затем закрывается. Нет предупреждений или сообщений об ошибках. Приложение больше не работает. Моя архитектура такова: MVC 2.0 с использованием мастер-страниц. JQM Beta 3, Google Maps API v3. Приложение представляет собой веб-приложение, использующее технологии, которые я только что упомянул, однако оно работает внутри веб-браузера Safari, внутри установленного «родного» приложения iPhone. Когда происходит сбой приложения, как я упоминал выше, происходит сбой родного приложения iPhone. Отладка / Устранение неполадок: я могу запустить приложение успешно, 100% времени, без сбоев, просто используя собственный браузер Safari на мобильном устройстве и перейдя к веб-приложению, запущенному на веб-сервере. Только когда я запускаю «установленное» «родное» приложение iPhone, и нативное приложение переходит к тому же веб-приложению, работающему на том же веб-сервере, а затем переходит к части приложения с картами, поведение, которое я объяснил в Первый абзац встречается. В настоящее время я пытаюсь получить и проанализировать «Отчет о сбое», созданный изначально на устройстве iPhone, но у меня пока нет никакой полезной информации из этого отчета о сбое.

Я использую довольно простую реализацию Карт Google с довольно простым стандартным кодом:

<script type="text/javascript">
    $('#gmap-2').live("pageshow", function () {
        initMap();
    });
    function initMap() {
        var latlng = getLatLng();
        var myOptions = {
            zoom: 12,
            center: latlng,
            mapTypeId: google.maps.MapTypeId.ROADMAP
        };
        var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
    }
    function getLatLng() {
        var latitude = "<%: Model.Latitude %>";    // "32.931962"; 
        var longitude = "<%: Model.Longitude %>";  //"-96.789191";
        var TSlatlng = new google.maps.LatLng(latitude, longitude);
        return TSlatlng;
    }
</script>
    <div data-role="content" data-theme="c">
        <div class="ui-bar-c ui-corner-all ui-shadow" style="padding: 1em;">
            <div id="map_canvas" style="height: 300px;">
            </div>
        </div>
</div>

«Заголовок» выглядит так:

<!-- google maps api script -->
<script src="http://maps.google.com/maps/api/js?sensor=false" type="text/javascript"></script>

<!-- core jQuery -->
<script src="../../../../Scripts/jquerymobile/js/jquery-1.6.1.min.js" type="text/javascript"></script>

<script type="text/javascript">
    $(document).bind("mobileinit", function () {
        $.mobile.page.prototype.options.addBackBtn = true;
    });
</script>
<!-- core jQuery Mobile -->
<!-- BETA 3 -->
<script src="../../../../Scripts/jquerymobile/js/jquery.mobile-1.0b3.min.js" type="text/javascript"></script>
</head>

1 Ответ

0 голосов
/ 28 сентября 2011

Я решил эту проблему. Я хотел опубликовать решение здесь для полноты. Основная причина была не в JQuery или JQuery Mobile ... и не в HTML или CSS. Основной причиной была проблема с памятью в «родной» части приложения iPhone (похоронена в Objective C). Недопустимый код доступа к памяти был удален из источника, и теперь все хорошо. Карты Google отображаются так, как они были спроектированы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...