![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
現在地の座標を取得するために下記のようにしています。
「var」をつけなければグローバル変数になるようなので関数外に宣言していますが
結果はundefinedになります。
PHPでいうところのセッションのように関数をまたいで変数を使いたいのですが
どうすればいいのでしょうか?
myLatlng = 'ダミー';
function loadXml( url )
{
$.ajax({
url: url,
type: 'GET',
dataType: 'xml',
timeout: 5000,
}).done(function( xml ){
myLatLng = geoLocate();
alert(myLatLng);//undefined
parseXml( xml );
}).fail(function( xml ){
alert( '読み込みに失敗しました' );
});
}
function geoLocate()
{
var position_options = {
enableHightAccuracy: true
};
navigator.geolocation.watchPosition( success, fatal, position_options );
function success( position )
{
return new google.maps.LatLng( position.coords.latitude, position.coords.longitude );
}
function fatal( error )
{
alert( '位置情報の取得に失敗しました' );
return null;
}
}
No.3ベストアンサー
- 回答日時:
私もやってみましたが、return ではダメなようです。
→Javascriptについては、自分も素人ですが
以下のコードでGoogle Map が表示できますので、
基本的な構成を変えてみた方が良いと思います。
----------------------------------
<!DOCTYPE html>
<html><head><title>現在地取得</title>
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=true"> …
<script type="text/javascript">
var options;
var position_options;
var map;
function geoLocate(){
position_options = {
enableHightAccuracy: true
};
navigator.geolocation.watchPosition(success, fatal, position_options);
function success(position){
alert('位置情報の取得に成功しました');
options = {
zoom: 15,
center: new google.maps.LatLng( position.coords.latitude, position.coords.longitude ),
mapTypeId: google.maps.MapTypeId.ROADMAP
};
map = new google.maps.Map(document.getElementById('canvas'), options);
}
function fatal(error){
alert('位置情報の取得に失敗しました');
}
}
</script></head>
<body onload="geoLocate()">
<div id="canvas" style="width: 480px; height: 480px;"></div>
</body></html>
試してまでいただきありがとうございます!
>return ではダメなようです。
やはりそうですか・・・住所から座標を取得するソースも書いてみましたが
こちらもreturnすることができずで調べてみてもはっきりした回答がなく
モヤモヤしていました^^;
APIの仕様のようなのでこればっかりは諦めるしかないですね。
できるだけ関数でわけたかったのですが、基本構造から見直ししてみます。
No.2
- 回答日時:
>myLatLng = geoLocate();
>alert(myLatLng);//undefined
あくまでこの部分だけへの提案ですが、
geoLocate関数が何も返していないようですので、適切な値を返すようにしてみてください。
この回答への補足
取得した値をそのまま使っている例は多数あるのですが、returnしている例が
見つからずどうしていいものかわからず困っております。
どのように書けばいいか具体的に教えていただけないでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript 画像の表示位置 3 2022/12/23 08:25
- オープンソース Coinmarketcap api 1 2022/05/30 15:47
- JavaScript JAVASCRIPT 2 2022/04/15 15:10
- JavaScript ソースコードのいじる場所が分かりません。 1 2022/12/23 02:06
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/30 09:10
- JavaScript スマフォではボタンを表示させたくない 2 2023/01/20 14:26
- JavaScript 1日1回引けるJavaScriptおみくじについて 1 2022/12/12 22:28
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/07 21:04
- JavaScript html5に変えるとスライドショーが消えてしまった。 3 2022/03/26 19:53
- AJAX JavascriptからPHPへのAjax通信でnullが返ってくる 3 2022/08/03 22:00
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
functionから別のfunctionを実...
-
関数でy=g(x)のgとは何の略です...
-
クリックすると上に開くアコー...
-
getElementByIdを使用したグロ...
-
要素名がスペースを含む場合のj...
-
idを使わずにonclickで自身の要...
-
jslintのエラーについて質問
-
setTimeoutで、止まらない
-
無名関数を使うメリットは何で...
-
pythonでのクロージャの記述
-
jqueryの変数を関数の外に出す方法
-
コードをスマートにさせたい。
-
ajax反映後のjqueryが動かない
-
google apps scriptの終了のさせ方
-
翌月を取得するGASが分かりません
-
GASでundefinedエラーが出ます
-
日付の書式の確認方法
-
Linux バイナリ実行できない "...
-
ジェネレーターの作り方
-
ActiveXobjectが作成できない
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
functionから別のfunctionを実...
-
idを使わずにonclickで自身の要...
-
関数でy=g(x)のgとは何の略です...
-
phpでの文字の点滅表示
-
JAVAスクリプトで指定時間以降...
-
jslintのエラーについて質問
-
ページ内に複数表がある場合のT...
-
XMLHttpRequestでキャッシュを...
-
関数名をテキストから読み込む...
-
jQueryでzipを解凍読み込みする...
-
getElementByIdを使用したグロ...
-
jQuery 同じ処理を関数にまとめ...
-
クリックすると上に開くアコー...
-
小数点以下を5刻みで表示
-
Javascriptで引数の参照渡しか...
-
jQueryの"return false"の役割...
-
javascript(jQuery)でセル内...
-
jQueryの :not() .not() が有効...
-
jqueryの変数を関数の外に出す方法
-
jquery 複数のメソッド
おすすめ情報