2012-05-16 32 views
5

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

Trả lời

3

Tôi e rằng bạn chỉ có một bản sửa lỗi lỗi thời lỗi thời trước mặt bạn. Cách tiếp cận của tôi sẽ là thêm đầu ra có thể nhìn thấy tại các điểm quan trọng khác nhau trong mã (ngay trước và sau khi getCurrentPosition được gọi, và vào đầu showMap, ví dụ) và thu hẹp từ đó chỉ xảy ra sự cố. Một khi bạn biết những gì thất bại bạn có thể có thể phát triển một ý tưởng về lý do tại sao, nhưng cho đến khi bạn biết rằng bạn đang flailing trong bóng tối.

(Tôi đã làm việc trên một webapp di động định vị dựa trên hỗ trợ Android, vì vậy trong trường hợp bạn cần bất kỳ sự bảo đảm, không có gì vốn đã không thể về tình hình của bạn là.)

+0

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ì –

+0

@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

+0

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 :( –

Các vấn đề liên quan