Tôi đang xây dựng trang web sử dụng mã vị trí địa lý, Giả sử tải mapCanvas và sau khi người dùng nhấp vào "Tìm thấy tôi!" nút có được vị trí của mình và đặt trung tâm của bản đồ dựa trên vị trí của người dùng. Nó hoạt động tốt với Firefox, Chrome, Safari, được thử nghiệm trên PC và iPhone thông thường mà thiết bị duy nhất không hoạt động với nó là bất kỳ điện thoại di động nào có Android. đây là một mã số:Trình duyệt Android không hoạt động với vị trí địa lý
<script src="http://maps.google.com/maps?file=api&v=3&key=YourKey"
type="text/javascript"></script>
<script type="text/javascript">
//<![CDATA[
var iconBlue = new GIcon();
iconBlue.image = 'http://labs.google.com/ridefinder/images/mm_20_blue.png';
iconBlue.shadow = 'http://labs.google.com/ridefinder/images/mm_20_shadow.png';
iconBlue.iconSize = new GSize(17, 25);
iconBlue.shadowSize = new GSize(1, 1);
iconBlue.iconAnchor = new GPoint(6, 20);
iconBlue.infoWindowAnchor = new GPoint(5, 1);
var iconRed = new GIcon();
iconRed.image = 'http://labs.google.com/ridefinder/images/mm_20_red.png';
iconRed.shadow = 'http://labs.google.com/ridefinder/images/mm_20_shadow.png';
iconRed.iconSize = new GSize(17, 25);
iconRed.shadowSize = new GSize(1, 1);
iconRed.iconAnchor = new GPoint(6, 20);
iconRed.infoWindowAnchor = new GPoint(5, 1);
var customIcons = [];
customIcons["restaurant"] = iconBlue;
customIcons["bar"] = iconRed;
function load() {
if (GBrowserIsCompatible()) {
var map = new GMap2(document.getElementById("map_canvas"));
map.setCenter(new GLatLng(50.061795,19.936924), 16);
// Change this depending on the name of your PHP file
GDownloadUrl("Your_xml.php", function(data) {
var xml = GXml.parse(data);
var markers = xml.documentElement.getElementsByTagName("marker");
for (var i = 0; i < markers.length; i++) {
var name = markers[i].getAttribute("name");
var address = markers[i].getAttribute("address");
var type = markers[i].getAttribute("type");
var point = new GLatLng(parseFloat(markers[i].getAttribute("lat")),
parseFloat(markers[i].getAttribute("lng")));
var marker = createMarker(point, name, address, type);
map.addOverlay(marker);
}
});
}
}
function createMarker(point, name, address, type) {
var marker = new GMarker(point, customIcons[type]);
var html = "<b>" + name + "</b> <br/>" + address;
GEvent.addListener(marker, 'click', function() {
marker.openInfoWindowHtml(html);
});
return marker;
}
//]]>
function findLoc(){
if (!navigator.geolocation) {
alert('Sorry, your browser does not support Geo Services');
}
else {
// Get the current location
navigator.geolocation.getCurrentPosition(showMap);
}
}
function showMap(position){
var lat = position.coords.latitude;
var lon = position.coords.longitude;
var myPoint = new GLatLng(lat, lon);
var map = new GMap2(document.getElementById("map_canvas"));
map.setCenter(myPoint, 15);
GDownloadUrl("Your_xml.php", function(data) {
var xml = GXml.parse(data);
var markers = xml.documentElement.getElementsByTagName("marker");
for (var i = 0; i < markers.length; i++) {
var name = markers[i].getAttribute("name");
var address = markers[i].getAttribute("address");
var type = markers[i].getAttribute("type");
var point = new GLatLng(parseFloat(markers[i].getAttribute("lat")),
parseFloat(markers[i].getAttribute("lng")));
var marker = createMarker(point, name, address, type);
map.addOverlay(marker);
}
});
function createMarker(point, name, address, type) {
var marker = new GMarker(point, customIcons[type]);
var html = "<b>" + name + "</b> <br/>" + address;
GEvent.addListener(marker, 'click', function() {
marker.openInfoWindowHtml(html);
});
return marker;
}
}
Tôi không thể tìm thấy giải pháp nào để nó hoạt động. PS Không có lỗi hoặc báo cáo nào đưa ra bất kỳ gợi ý nào làm cho nó dễ hiểu hơn. Thiết bị đã bật GPS. lời cầu xin giúp tôi đã cố gắng tìm ra trong 2 tuần
thx cho câu trả lời tôi đã thêm một cảnh báo ('Thành công!') Ngay trước navigator.geolocation.getCurrentPosition (showMap); và nó cho tôi thấy thành công của tôi! điều đó có nghĩa là hàm findLoc này đã được kích hoạt một cái gì đó là sai với chức năng showMap nhưng tôi không biết những gì –
@TomLiland: Phải. Bây giờ bạn tiếp tục với điều đó cho đến khi bạn tìm ra phần nào của mã thực sự thất bại. Đầu tiên, một cảnh báo ở đầu 'showMap' cho bạn biết liệu hàm đó có thực sự được gọi hay không. Và vân vân; nguyên tắc chung nên được rõ ràng ngay bây giờ. – chaos
Có vẻ như có điều gì đó sai với navigator.geolocation.getCurrentPosition (showMap) điều này không được gọi sau khi hàm findLock bắt đầu. Tôi đã đặt cảnh báo ngay sau khi điều hướng và tin nhắn không hiển thị. Trên iPhone, tôi nhận được tất cả tin nhắn. Điều kỳ lạ nhỏ xíu :( –