質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Geolocation

Geolocation(ジオロケーション)は、携帯電話やインターネットに接続したコンピューターターミナルなど、オブジェクトの現実世界での地理的位置の情報を扱う技術であり、位置評価の実施や、実際に評価された位置を示す場合もあります。

Google マップ

Google Mapは、Google社がオンラインで提供している地図・ローカル検索サービスです。GIS(Geographic Information System:地理情報システム)の中の「WebGIS」に該当します。地図・航空写真・地形の表示方式があり、それぞれユーザーが縮尺を調整して表示させることができます。地域の情報サービスを検索する機能やルート検索の機能も搭載されています。

Q&A

解決済

1回答

1505閲覧

GoogleMapApi Geocode マーカー

shaak

総合スコア607

Geolocation

Geolocation(ジオロケーション)は、携帯電話やインターネットに接続したコンピューターターミナルなど、オブジェクトの現実世界での地理的位置の情報を扱う技術であり、位置評価の実施や、実際に評価された位置を示す場合もあります。

Google マップ

Google Mapは、Google社がオンラインで提供している地図・ローカル検索サービスです。GIS(Geographic Information System:地理情報システム)の中の「WebGIS」に該当します。地図・航空写真・地形の表示方式があり、それぞれユーザーが縮尺を調整して表示させることができます。地域の情報サービスを検索する機能やルート検索の機能も搭載されています。

0グッド

0クリップ

投稿2017/01/26 07:42

編集2017/01/26 10:03

###前提・実現したいこと
GoogleMapApiを使用しています。
住所情報をもとにGeocodeでlatlngを取得し、複数マーカーを表示したいと考えています。

###発生している問題・エラーメッセージ
10件までは表示できるのですが、それ以上件数があるとエラーになってしまいます。

エラーメッセージ Uncaught TypeError: Cannot read property '0' of null

###該当のソースコード

var addresses = [ ['横浜市中区伊勢佐木町1-4-4','ABC-MART イセザキモール店'],['横浜市中区伊勢佐木町1-5-3','カステラの横濱文明堂'],['横浜市中区伊勢佐木町2-60','花見煎餅吾妻屋総本店'],['横浜市中区伊勢佐木町1-6-5','ヴィドフランス伊勢佐木町店'],['横浜市中区伊勢佐木町1-2-1','ワールドフーズいせ一'],['横浜市中区伊勢佐木町1-4-4','ABC-MART イセザキモール店'],['横浜市中区伊勢佐木町1-5-3','カステラの横濱文明堂'],['横浜市中区伊勢佐木町2-60','花見煎餅吾妻屋総本店'],['横浜市中区伊勢佐木町1-6-5','ヴィドフランス伊勢佐木町店'],['横浜市中区伊勢佐木町1-2-1','ワールドフーズいせ一'],['横浜市中区伊勢佐木町1-4-4','ABC-MART イセザキモール店'],['横浜市中区伊勢佐木町1-5-3','カステラの横濱文明堂'],['横浜市中区伊勢佐木町2-60','花見煎餅吾妻屋総本店'],['横浜市中区伊勢佐木町1-6-5','ヴィドフランス伊勢佐木町店'],['横浜市中区伊勢佐木町1-2-1','ワールドフーズいせ一'] ]; addresses.map(function(address, i){ geocoder.geocode({'address' : address[0]}, function(results, status){ var position = results[0].geometry.location; var marker = new google.maps.Marker({ position: position, map: map }); var content = '<p>'+addresses[i][1] + '<br>' + addresses[i][0]+'</p>'+'<br>'+ '<a href="' + urls[i] +'">店舗ページへ<a>' ; var infoWindow = new google.maps.InfoWindow({ content: content, position: position, size: new google.maps.Size(50,50) }); google.maps.event.addListener(marker, 'click', function(){ infoWindow.open(map, marker); if (currentInfoWindow) { currentInfoWindow.close(); } currentInfoWindow = infoWindow; }); bounds.extend(position); map.fitBounds(bounds); map.setZoom(16); if(addresses.length === 1) map.setZoom(18); }); });

###試したこと
色々調べた結果、Geocodeでは一度に10件以上投げるとハングするといった文献は見つけました。
都度Geocodeする必要は無いのですが、予めLatlangを住所から取得して格納して置く方法などあるのでしょうか?

###補足情報(言語/FW/ツール等のバージョンなど

MTにてカスタムフィールドから住所を取得し、Map.jsファイルをMtから排出。
Webページにてmap.jsを読み込み、Mapを描画しています。

どうぞよろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kei344

2017/01/26 08:52

質問文のコードはそれぞれコードブロックで囲んでいただけませんか? ```(バッククオート3つ)で囲み、前後に改行をいれるか、コードを選択して「<code>」ボタンを押すとコードブロックになります。
shaak

2017/01/26 10:01

なるほど、ご指摘ありがとうございます。
guest

回答1

0

ベストアンサー

一度に大量のデータをアップロードするのであれば、KML に変換してインポートしてみてはいかがでしょうか?

参考:Google マップ KML インポート ユーティリティ

投稿2017/01/26 07:56

Zuishin

総合スコア28660

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

shaak

2017/01/26 08:04

ごめんなさい、質問のしかたが間違っていたかもしれません。 MTによって追加されていく住所情報を、登録者が意図することなくLatlngに変換して蓄積していければ良いのですが、GeocodeApiを裏で動かしてLatlngを取得>配列に追加していく方法しかないのかなと思っており、配列にさえできれば表示は出来る状態です。
Zuishin

2017/01/26 08:13

Google Maps API には一定時間(複数種類)内の使用回数に制限があったと思います。緯度経度への変換頻度がその制限に引っかかるようなら、待ち行列を作って時間をおいて順に変換していくしかないのではないでしょうか? もしそれで処理しきれないなら、制限が緩くなるプランがあったと思いますので、それを検討せざるを得ないでしょう。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問