Иногда это работает .... иногда это не так. Очень странно.
Я написал мобильное приложение 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>