2017-09-05 13 views
-1

位置が検出されたときにうまく動作するGoogleマップがありますが、地図が表示されない場合は表示されません。私がしたいのは、関数locErrorの変数にlatとlng変数を設定しても場所を検出できない場合です。それはどうやってできますか?Googleマップはデフォルト位置にマーカーを設定しました

は、ここに私のコードです:

function initializeMap() { 
    map = new google.maps.Map(document.getElementById('map_canvas'), { 
     zoom: 19, 
     mapTypeId: google.maps.MapTypeId.ROADMAP 
    }); 
    directionsDisplay.setMap(map); 
    directionsDisplay.setPanel(document.getElementById('test')); 
} 
var pinColor = "6495ED"; 
var pinImage = new google.maps.MarkerImage("http://chart.apis.google.com/chart?chst=d_map_pin_letter&chld=%E2%80%A2|" + pinColor, 
    new google.maps.Size(21, 34), 
    new google.maps.Point(0, 0), 
    new google.maps.Point(10, 34)); 
var pinShadow = new google.maps.MarkerImage("http://chart.apis.google.com/chart?chst=d_map_pin_shadow", 
    new google.maps.Size(40, 37), 
    new google.maps.Point(0, 0), 
    new google.maps.Point(12, 35)); 

function locError(error) { 
    // the current position could not be located 
    lat = 53.5409298; 
    lng = -2.11136590000001; 
    initializeMap(); 
    setCurrentPosition(position); 
} 

function setCurrentPosition(position) { 
    if (position.coords.latitude) { 
     lat = position.coords.latitude; 
     lng = position.coords.longitude; 
    } else { 
     lat = 53.5409298; 
     lng = -2.11136590000001; 
    } 
    var accuracy = position.coords.accuracy; 
    currentPositionMarker = new google.maps.Marker({ 
     map: map, 
     position: new google.maps.LatLng(
      lat, 
      lng 
     ), 
     title: "Current Position", 
     icon: pinImage, 
     shadow: pinShadow, 
     animation: google.maps.Animation.DROP 
    }); 
    map.panTo(new google.maps.LatLng(
     lat, 
     lng 
    )); 
    circle = new google.maps.Circle({ 
     map: map, 
     radius: accuracy, 
           strokeColor: '#E62C56', 
           strokeOpacity: 0.8, 
           strokeWeight: 2, 
           fillColor: '#6495ED', 
           fillOpacity: 0.10 
    }); 

    circle.bindTo('center', currentPositionMarker, 'position') 
    algolia_search(position); 
} 

function displayAndWatch(position) { 
    // set current position 
    setCurrentPosition(position); 
    // watch position 
    watchCurrentPosition(position); 
} 

function watchCurrentPosition(position) { 
    var positionTimer = navigator.geolocation.watchPosition(
     function (position) { 
      setMarkerPosition(
       currentPositionMarker, 
       position, 
      ) 
     }); 
} 

function setMarkerPosition(marker, position) { 
    circle.setRadius(position.coords.accuracy); 
    marker.setPosition(
     new google.maps.LatLng(
      lat, 
      lng) 
    ); 
    algolia_search(position); 
} 

function initLocationProcedure() { 
    initializeMap(); 
    if (navigator.geolocation) { 
     navigator.geolocation.getCurrentPosition(displayAndWatch, locError); 
    } else { 
     displayAndWatch(); 
     locError(); 
    } 
} 

function clearOverlays() { 
    for (var i = 0; i < markers.length; i++) { 
     markers[i].setMap(null); 
    } 
    markers.length = 0; 
} 
$(document).ready(function() { 
    initLocationProcedure(); 
}); 

場所がオフの場合、マップの問題は全くロードされていない原因は何?どのように私はまだマップをロードし、位置に見つからないときにトリガされているエラー関数で設定されたlatとlngにバインドすることができますか?

+0

私は投稿のコードでJavaScriptのエラーが発生します。あなたの問題を示す[mcve]を提供してください。 – geocodezip

答えて

1

あなたのループなどに場所がない場合は、 。

function initializeMap() { 
      map = new google.maps.Map(document.getElementById('map'), { 
      zoom: 19, 
      center: new google.maps.LatLng(53.5409298,-2.11136590000001), 
      mapTypeId: google.maps.MapTypeId.ROADMAP 
      }); 

      var lat = 53.5409298; 
      var lng = -2.11136590000001; 
      var title = "Test" +" "+"Set"; 
      var latLng = new google.maps.LatLng(lat,lng); 
      var marker = new google.maps.Marker({ 
       zoom: 12, 
       position: latLng, 
       map: map, 
       title: title 
       }); 

     } 

私はもっと一つのことは、あなたがあなたのマップの中央位置を与えていないということですので、それはエラーが発生しますことも観察しました。 `キャッチされていないにReferenceError:directionsDisplayがdefined`されていない

center: new google.maps.LatLng(53.5409298,-2.11136590000001), 

おかげで

+0

まだ動作しません、私は両方のソリューションを試しました –

+0

それは現在のコード –

+0

灰色の画面ですが、場所がオファーであり、私の警報がポッピングではないが、なぜですか、なぜinitiateMap() –

関連する問題