現在地の座標を取得するために下記のようにしています。
「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を実...
-
ページ内に複数表がある場合のT...
-
idを使わずにonclickで自身の要...
-
(function(){})()の意味
-
二次元配列を使って順位をだす...
-
GASでundefinedエラーが出ます
-
今日の月と日付の1週間後や3日...
-
テキストボックスに文字列やタ...
-
javascript 変数名の連結をしたい
-
翌月を取得するGASが分かりません
-
【JavaScript】オブジェクト型...
-
タイピングゲームの異なるロー...
-
var_dumpのdump意味はを知りた...
-
HTMLのメニューをインクルード...
-
分岐処理(アルゴリズム)
-
リンクの有無を判別して画像の...
-
JavaScriptで二次元配列?
-
GASでGoogleフォームの自動返信...
-
Javascriptで指定した位置の文...
-
面白い!便利!と思った【JavaS...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
idを使わずにonclickで自身の要...
-
functionから別のfunctionを実...
-
関数でy=g(x)のgとは何の略です...
-
jslintのエラーについて質問
-
クリックすると上に開くアコー...
-
XMLHttpRequestでキャッシュを...
-
ajax反映後のjqueryが動かない
-
要素名がスペースを含む場合のj...
-
function(e)の意味を教えてくだ...
-
jQueryの :not() .not() が有効...
-
jQueryでzipを解凍読み込みする...
-
getElementByIdを使用したグロ...
-
関数名をテキストから読み込む...
-
jqueryuiのdialog
-
addEventListener()でリスナー...
-
jqueryのグローバル変数とロー...
-
jQuery 同じ処理を関数にまとめ...
-
drawImageの描画順序の指定につ...
-
XMLHttpRequestオブジェクトが...
-
jQueryが読み込めない
おすすめ情報