google maps api で周辺の飲食店情報を取得しようとしています。
位置情報取得した後のマップは表示されるのですが
ポインターが表示されません。
どうやら変数userPositionに値が入っていないようです。
geolocationでは値が代入され動いているのですが、
それ以降は値が入っていません。
原因や解決策を教えてください!!
hoge.js
1var takeoutVal = 0; 2var distanceVal = 400; 3var genreVal = 0; 4 5function tChange() { 6 takeoutVal = document.getElementById("takeout").value; 7}; 8function dChange() { 9 distanceVal = document.getElementById("distance").value; 10}; 11function gChange() { 12 genreVal = document.getElementById("genre").value; 13}; 14var map; 15var userPosition; 16 17//================================================== 18 19 20// mapの表示 21function initMap() { 22 'use strict'; 23 var mapCanvas = document.getElementById('map'); 24 25 // Geolocation 26 if (!navigator.geolocation) { 27 alert('Geolocation not supported'); 28 return; 29 } 30 navigator.geolocation.getCurrentPosition(function(position) { 31 userPosition = {lat: position.coords.latitude, lng: position.coords.longitude} 32 map = new google.maps.Map(mapCanvas, { 33 center: userPosition, 34 zoom: 15, 35 radius: distanceVal, 36 disableDefaultUI: true, //地図切り替え、ズームボタンなどを無効化する 37 fullscreenControl: true,//全画面表示コントロールは表示する 38 fullscreenControlOptions: { //全画面表示コントロールの位置 39 position: google.maps.ControlPosition.RIGHT_BOTTOM, 40 }, 41 }); 42 }, function() { 43 alert('Geolocation failed!'); 44 return; 45 }); 46 47 //情報ウィンドウのインスタンスの生成(後でマーカーに紐付け) 48 var infowindow = new google.maps.InfoWindow(); 49 50 //PlacesService のインスタンスの生成(引数に map を指定) 51 var service = new google.maps.places.PlacesService(map); 52 53 54 service.nearbySearch({ 55 location: userPosition, //検索するロケーション 56 radius: distanceVal, //検索する半径(メートル) 57 openNow:true, 58 type: ['food'] //タイプで検索。文字列またはその配列で指定 59 }, callback); //コールバック関数(callback)は別途定義 60 61 function callback(results, status) { 62 if (status === google.maps.places.PlacesServiceStatus.OK) { 63 //results の数だけ for 文で繰り返し処理 64 for (var i = 0; i < results.length; i++) { 65 createMarker(results[i]); 66 } 67 } 68 } 69 70 //マーカーを生成する関数(引数には検索結果の配列 results[i] が入ってきます) 71 function createMarker(place) { 72 //var placeLoc = place.geometry.location; 73 var marker = new google.maps.Marker({ 74 map: map, 75 position: place.geometry.location //results[i].geometry.location 76 }); 77 78 //マーカーにイベントリスナを設定 79 marker.addListener('click', function() { 80 infowindow.setContent(place.name); //results[i].name 81 infowindow.open(map, this); 82 }); 83 }
回答1件
あなたの回答
tips
プレビュー