• 締切済み

javascriptで困っています。教えてください

やぎ じじい(@yagijijii)の回答

回答No.1

Geolocationは3年ぐらい前に手を出したレベルです。 私の知恵の範囲の回答になってしまいますが、その点はご容赦ください。 > watchPositionで位置情報をとり続けているのは1回ではないのでしょうか? これは一回でしょう。あくまでもユーザーのアクセス数だと思います。 気になるのであれば、watchPositionではなく、getCurrentPosition を 使用した方が良いかもしれません。 →私は10秒おきの取得にしました > google mapのAPIにアクセス数の制限とか、サーバに制限とかあるのでしょうか? これが25000回の制限になると思うので、超えても日を改めれば動作するはずです。 > 作ってアップしていたファイルを試してみると、位置情報をうまくとれるものと、 > とれないものがあります。 これは、非常に良い解決のヒントになるのではないでしょうか。

dkong
質問者

お礼

ありがとうございます。 getCurrentPositionでも試してみます。 もう一度コードや他のファイルも調べてみます。

関連するQ&A

  • javascriptで困っています。

    以下のような、現在地を取得するhtmlコンテンツを作ったのですが、スマホによってきちんと取得できたり、Failed to start Geolocation serviceというメッセージが出たりします。いずれの場合もGPSはオンにしています。メッセージが出るのはブラウザーの影響とか何かあるのでしょうか?ブラウザーがサポートしていない場合はLocation APIがサポートされていません。と表示するようにしているのですが、Failed to start Geolocation serviceが出る原因が分かりません。ご存知の方がいらっしゃいましたら、教えてください。よろしくお願いします。 <!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8" /> <title>現在地取得</title> <script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script> <style> #map { width: 480px; height: 640px; border: solid 1px #ccc; } </style> </head> <body> <h1>Location API サンプル</h1> <div id="map"></div> <div id="message"></div> <script> window.onload =function() { if (navigator.geolocation) { navigator.geolocation.getCurrentPosition(function(position) { var latlng = new google.maps.LatLng(position.coords.latitude, position.coords.longitude); var options = { zoom: 15, center: latlng, mapTypeId: google.maps.MapTypeId.ROADMAP }; var map = new google.maps.Map(document.getElementById('map'), options); var marker = new google.maps.Marker({ position: latlng, map: map, title: '現在地' }); }, function(e) { document.getElementById('message').innerHTML = typeof e == 'string' ? e : e.message; }); } else { document.getElementById('message').innerHTML = 'Location APIがサポートされていません。'; } }; </script> </body> </html>

  • javascriptで困っています。教えてください

    読み込まれたら、watchPositionで位置情報を取得し続け、ボタンを押したタイミングでmap_draw関数を実行して、地図を表示させようと思っています。そのときseidoが5以下のときだけ地図を表示させたいので、seidoが5より大きいときは、map_draw関数をもう一度呼び出すループを考えました。しかし、watchPositionではきちんとseido = position.coords.accuracy;の値がとれており、5以下になっているのですが、map_draw関数のなかでseidoの変数をうまく取得できません。map_draw関数では最初の一回目だけ取得して、後は値が変わりません。ループの部分に問題があるのでしょうか?教えていただければと思い投稿しました。よろしくお願いします。 <html> <head> <script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=true&language=ja&v=3.6"></script> <script type="text/javascript" charset="utf-8"> var ido; var keido ; var seido ; var map; var btn; window.onload = function(){ btn = document.getElementById("btn"); btn.addEventListener('click', map_draw, false); navigator.geolocation.watchPosition(update,poserror,{maximumAge: 30000,enableHighAccuracy:1}); } function update(position){ ido = position.coords.latitude; keido = position.coords.longitude; seido = position.coords.accuracy;            var htmlTxt = "Lat." + ido + "Lng" + keido+ "Acc" + seido; htmlTxt += "<br>"+(new Date()); var pos = document.getElementById("pos"); pos.innerHTML = htmlTxt; } function poserror(position){ alert("error");         } function map_draw(){ if(seido>5){ map_draw(); }else{  var lat = ido;  var lng = keido;  var Latlng = new google.maps.LatLng( lat , lng ); var myOptions = {  zoom: 17,  center: Latlng,  mapTypeId: google.maps.MapTypeId.ROADMAP   }; map = new google.maps.Map(document.getElementById("map_canvas"),myOptions); } } </script> </head> <body> <p id="pos">情報</p> <div id="map_canvas" style="width:480px; height:640px;">地図</div> <button id="btn">地図を描く</button> </body>

  • javascriptでphpに値を渡す

    javascriptの値をPHPに渡す、若しくはjavascriptでリダイレクト <script type="text/javascript"> if (navigator.geolocation) { // 現在の位置情報を取得 navigator.geolocation.getCurrentPosition( // (1)位置情報の取得に成功した場合 function (pos) { var location = pos.coords.latitude +","; location += pos.coords.longitude ; document.getElementById("location").innerHTML = location; }, // (2)位置情報の取得に失敗した場合 function (error) { var message = ""; switch (error.code) { // 位置情報が取得できない場合 case error.POSITION_UNAVAILABLE: message = "位置情報の取得ができませんでした。"; break; // Geolocationの使用が許可されない場合 case error.PERMISSION_DENIED: message = "位置情報取得の使用許可がされませんでした。"; break; // タイムアウトした場合 case error.PERMISSION_DENIED_TIMEOUT: message = "位置情報取得中にタイムアウトしました。"; break; } window.alert(message); } ); } else { window.alert("本ブラウザではGeolocationが使えません"); } </script> ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー 上記のコードで緯度経度を取得しています。この緯度経度が3333333(var location部) だとしたらhtt//hogehoge.com/3333333へリダイレクトさせたいです。 のでvar location部をphpに渡してリダイレクトさせるか、若しくはjavascriptで上記URLにリダイレクトさせる必要があります。 何か良い方法はないでしょうか?当方お手上げ状態です。

  • google maps apiについて

    現在HPをリニューアルしています。 旧サイトと新サイトは同じサーバー、同じドメインを使用しています。 旧サイトのデータはFTP内にはありません。 所在地マップに、GoogleMapを使用しています。 そこで、下記のようなエラーが出ます。 このウェブサイトには別の Google Maps API キーが必要です。新しいキーは http://code.google.com/apis/maps/signup.html で作成できます。 Google Maps API サーバーでリクエストが拒否されました。リクエスト内で指定した「sensor」パラメータには「true」または「false」のいずれかを指定する必要があります。 次に上記で指定されている http://code.google.com/apis/maps/signup.html にて、URLを指定して、APIを生成ボタンを押す 次にJavaScript Maps API の例で表示された <script src="http://maps.google.com/maps?file=api&amp;v=2&amp;sensor=true_or_false&amp;key=*********************************" type="text/javascript"></script> をエラーが表示されるページに貼り付ける ここまでの作業をおこなっております。 ただ、これで正しいのかが分かりません。 詳しい方からのご助言頂けますでしょうか?

  • JavaScriptが実装できない

    初めまして。 Google Maps APIを使ってwebページ上でgoogle mapsを表示させようと思い htmlファイルとjavascriptファイルを実装したのですがうまく動きません。 ソースコードは以下の通りです。 googlemaps.html <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <style type="text/css"> html, body { height: 100%; } </style> <script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"> </script> <script type="text/javascript" src="http://www.google.com/jsapi"></script> <script type="text/javascript"> google.load("jquery", "1.5.0"); </script> <script type="text/javascript" src="googlemaps.js"></script> <title>指定した位置を中心とする地図</title> </head> <body> <p> 緯度<input id="lat" type="text" value="35.632997" /> 経度<input id="lng" type="text" value="139.648609" /> <button id="button">地図を作る</button> </p> <div id="map_canvas" style="width: 100%; height: 90%;"></div> </body> </html> googlemaps.js $(document).ready(function() { $("#button").click(function() { // input要素の値を取得し、マップの中心を決める var lat = $("#lat").val(); var lng = $("#lng").val(); var myCenter = new google.maps.LatLng(lat, lng); // 地図のオプション var myOptions = { zoom : 14, center : myCenter, mapTypeId : google.maps.MapTypeId.ROADMAP // 必須 }; // 地図の生成 var myMap = new google.maps.Map(document.getElementById("map_canvas"), myOptions); // マーカーの生成 new google.maps.Marker( { position : myCenter, map : myMap, title : "Hello World!" }); }); }); firebugはgooglemaps.js 404 not foundといっているのでhtmlとjavascriptの連携が うまくいってないのだと思うのですが、どうすればいいのかわからず前にすすめません。 お詳しい方、ご教授ください。

  • Facebookでgoogle MAP

    Facebookページで、google MAPの複数マーカー表示を作りました。 しかしサーバーに上げ、ページを表示させようとすると、 このウェブサイトには別の Google Maps API キーが必要です。新しいキーは http://code.google.com/apis/maps/documentation/javascript/v2/introduction.html#Obtaining_Key で作成できます。 という文章が出て、地図が表示されません。 <script src="http://maps.google.com/maps?file=api&amp;v=2&amp;key=APIキー" type="text/javascript"></script> Facebookではこの表記じゃダメなのでしょうか? ちなみにFacebookページはiframeで作っています。

  • Google Maps API Ver. 2のinfowindow(吹き出し)について

    Google Maps API Ver. 1をVer. 2に更新した際、 infowindow(吹き出し)が出なくなっていまいました。 修正したところは、 <script src="http://maps.google.co.jp/maps?file=api&v=1&key=… 「v=1」を「v=2」に変更のみです。 他に修正するところがあるのでしょうか? どなたか教えてください。

  • JavaScriptでの実装

    はじめまして。 google maps apiのGeocoderを使って住所を入力するとwebページ上にその住所を中心とした 地図を表示させたいのですがいまいちうまくいきません。 ソースコードは以下の通りです。 html <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <style type="text/css"> html, body { height: 100%; } </style> <script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script> <script type="text/javascript" src="http://www.google.com/jsapi"></script> <script type="text/javascript"> google.load("jquery", "1.5.0"); </script> <script type="text/javascript" src="addressmaps.js"></script> <script type="text/javascript"> $(document).ready(function() { $("#button").click(function() { var address = $("#address").val(); // input要素の値を取得 drawMap(address); // 地図を生成する }); }); </script> <title>指定した住所を中心とする地図</title> </head> <body> <p> <input id="address" type="text" value="東京都世田谷区新町3丁目" size="50" /> <button id="button">地図を作る</button> </p> <div id="map_canvas" style="width:100%; height:90%;"></div> </body> </html> javascript // geocodeのための、地図を生成するコールバック関数 function createMap(result, status) { if (status == google.maps.GeocoderStatus.OK) { //console.log(result); var myPosition = result[0].geometry.location; var myOptions = { zoom : 14, center : myPosition, mapTypeId : google.maps.MapTypeId.ROADMAP }; var myMap = new google.maps.Map(document.getElementById("map_canvas"), myOptions); } } // 住所から位置を取得し、地図を生成する function drawMap(myAddress) { // 住所から位置を取得するためのオブジェクト var geocoder = new google.maps.Geocoder(); // 住所から位置を取得し、その結果を使って地図を生成する geocoder.geocode( { address : myAddress }, createMap); // コールバック関数createMap()は上で定義されている } 特にエラーはでないのですが地図が表示されません。 詳しい方、ご教授ください

  • GoogleMapsAPI Key取得ができない

    HPを変更しました。 google maps を入れたいのです。 しかし、下記コメントが出てます。 このウエブサイトには 別のgoogle maps apiキーが必要です。新しいキーは http://code.google.com/apis/maps/documentation/javascript/v2/introduction.html#Obtaining_Key で作成できます。 ここを調べて見ても、apiキーが取得できません。 Google Maps APIを使うための API Key の取得が、V3では不要になりました。 と書いてありますが、現状api keyを取得しないと、使えません。 いろいろ調べたのですが、v2の取得方法は書いてありますが、現状では役に立ちません。 http://code.google.com/intl/ja/apis/maps/signup.html で登録できないから、質問しています。 具体的なやり方を教えてください。

  • Google Maps を組み込む

    まず質問のカテゴリはこちらでよろしいのでしょうか。 Google Maps を組み込む件についてですが、Google Maps APIでAPI Keyを取得し、GooglemapsEditorで地図データ生成ボタンを無事押したあと自分のファイルを保存する画面になるので、ファイルを保存、自分のレンタルサーバにアップロードしました。ですが開くと「GoogleマップAPIにしようされているキーは他のウェブサイトに登録されています。このウェブサイト用のキーをgoogle.com/apis/mapsにて作成、登録してください」という画面がでてしまいます。2ヶ月ほど前に自分のレンタルサーバにアップし作ったときは無事うまくいききちんとWEB上で表示されました。同じドメインで取得したからだめなんでしょうか。どなたかお願いします!