5

地理位置情報コードを使用する Web サイトを構築しています。mapCanvas をロードし、ユーザーが「Find 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週間それを理解しようとしてきました

4

1 に答える 1

3

残念ながら、目の前には骨の折れる昔ながらのデバッグがあります。私のアプローチは、コードのさまざまな重要なポイント (たとえば、 が呼び出される直前と直後getCurrentPosition、および の先頭showMap) に可視出力を追加し、そこから障害が発生している場所を絞り込むことです。何が失敗しているのかがわかれば、おそらくその理由を理解できるでしょう。

(私は、Android をサポートする地理位置情報ベースのモバイル Web アプリに取り組んできたので、安心が必要な場合に備えて、あなたの状況について本質的に不可能なことは何もありません。)

于 2012-05-16T16:33:06.587 に答える