Отображение карты Google в приложении BlackBerry WebWorks
Я пытаюсь отобразить карту Google из приложения WebWorks. Вот полный HTML-код этой страницы в приложении (обратите внимание, что он отлично работает в браузере):
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="viewport" id="viewport" content="height=device-height,width=device-width,user-scalable=no" />
<title>Waste Management Service Request</title>
<style type="text/css">
body {
min-height: 500px;
}
.center {
text-align: center;
}
#page {
font-family: Arial, sans-serif;
font-size: 85%;
width: 408px;
margin: 0 auto;
padding: 0 30px;
}
h3 {
color: #006A3C;
}
#map-canvas {
height: 300px;
}
</style>
<script type="text/javascript" src="jquery.min.js"></script>
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>
<script type="text/javascript">
if (typeof(blackberry) != "undefined") {
blackberry.system.event.onHardwareKey(blackberry.system.event.KEY_BACK, function() {
history.back();
});
}
$(document).ready(function(){
var geocoder, map;
geocoder = new google.maps.Geocoder();
var latlng = new google.maps.LatLng(-34.397, 150.644);
var mapOptions = {
zoom: 8,
center: latlng,
mapTypeId: google.maps.MapTypeId.ROADMAP
}
map = new google.maps.Map(document.getElementById("map-canvas"), mapOptions);
address = '100 1st St., New York City, NY'; // Hardcoded for testing.
geocoder.geocode( {'address': address}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
map.setCenter(results[0].geometry.location);
var marker = new google.maps.Marker({
map: map,
position: results[0].geometry.location
});
} else {
alert("The map failed because: " + status);
}
});
})
</script>
</head>
<body>
<div id="page">
<h3>Local Map</h3>
<div id="map-canvas"></div>
</div>
</body>
</html>
Внутри приложения он просто показывает серый прямоугольник, в котором должно появиться приложение.
Обратите внимание, что код в основном вытащен из источника этой страницы примера, на которую ссылается отсюда.
Есть идеи? Мой лучший выбор здесь - прибегнуть к тому, чтобы Google доставлял статические изображения, визуализируемые динамически (то есть, по этой методике), или мне чего-то не хватает, чтобы получить реальную вещь?
Кстати, я попытался пролистать стек вызовов JS для gmaps и добавить каждый домен в список разрешений приложения. У меня есть записи разрешений (как http, так и https) для gmaptiles.co.kr, google.com, googleapis.com и gstatic.com.
5 ответов
Какую версию симулятора вы используете? В версиях до 0.9.4 была известная проблема, которая вызывала проблемы при передаче параметров по URL и при доступе к локальным файлам. Вы можете попробовать связать с внешней библиотекой JQuery, чтобы исключить последний пункт (не забудьте добавить <access>
элементы для этого)
Можете ли вы опубликовать <access>
элементы, которые вы определили в вашем config.xml? Мне было интересно, если вам нужно subdomains="true"
или что-то типа того?
<access subdomains="true" uri="http://maps.google.com/maps/api/js"/>
Кроме этого, я предлагаю вам удалять контент со страницы, пока что-то не появится, например, удалить meta name="viewport"
линия и идти оттуда...
Я работаю с картами Google, и он работает нормально, используя браузер BB версии 6, но не в 5 (div только серый). Это с JQuery 1.5.1.
Я использую для тестирования, карты Google также используют другие домены.
Ваш код в порядке, просто позаботьтесь о файле config.xml, обеспечивающем доступ к нужным доменам, это работает для меня:
<access subdomains="true" uri="http://gstatic.com"/>
<access subdomains="true" uri="http://google.com"/>
<access subdomains="true" uri="http://googleapis.com"/>
Наконец, это работает только на BB6...
Хорошо, я получил ответ на вашу проблему, я думаю! Попробуйте использовать JQuery 1.5 вместо 1.5.1. JQuery 1.5.1, кажется, сломан в WebWorks для меня, что довольно глупо!