Android浏览器无法使用地理位置

时间:2012-05-16 16:22:34

标签: java php android browser geolocation

我正在建立一个使用地理定位代码的网站,它假设加载mapCanvas并在用户点击“Finde Me!”之后按钮获取其位置并根据用户位置设置地图的中心。它适用于Firefox,Chrome,Safari,在普通PC和iPhone上进行测试,唯一的设备无法使用Android手机。这是一个代码:

<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;
    }
}

我找不到任何解决方案让它发挥作用。 PS 没有错误或陈述给出任何暗示使其更容易理解。 设备启用了GPS。 请求帮助我一直试图弄清楚它2周

1 个答案:

答案 0 :(得分:3)

我担心你面前有一个艰苦的老式调试。我的方法是在代码中的各个重要点添加可见输出(在调用getCurrentPosition之前和之后,例如在showMap的开头)并从那里缩小范围失败正在发生。一旦你知道什么是失败的,你就可以了解为什么,但直到你知道你在黑暗中挣扎。

(我参与了一个支持Android的基于地理位置的移动网络应用程序,所以如果你需要任何保证,你的情况根本不可能。)