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

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

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

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Onsen UI

HTML5で記述されたモバイルアプリの高速化、およびネイティブアプリライクなUIが作れるフレームワーク。 様々なJavaScriptフレームワークと併せて使用することができます。スマートフォン向けアプリ、Webサイトに必要なアニメーション、UI/UXを実装することが可能になります。

Monaca

「Monaca」はiOS、Android、Windows向けのアプリ開発に対応した、Cordovaベースのモバイルアプリ開発プラットフォームです。HTML5、JavaScriptといったWeb標準技術を用いてモバイルアプリ開発を行うことができます。

Q&A

解決済

1回答

1483閲覧

Android端末でのObject型の扱いによるエラー

bi_tsu

総合スコア35

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Onsen UI

HTML5で記述されたモバイルアプリの高速化、およびネイティブアプリライクなUIが作れるフレームワーク。 様々なJavaScriptフレームワークと併せて使用することができます。スマートフォン向けアプリ、Webサイトに必要なアニメーション、UI/UXを実装することが可能になります。

Monaca

「Monaca」はiOS、Android、Windows向けのアプリ開発に対応した、Cordovaベースのモバイルアプリ開発プラットフォームです。HTML5、JavaScriptといったWeb標準技術を用いてモバイルアプリ開発を行うことができます。

0グッド

0クリップ

投稿2018/06/15 00:41

編集2018/06/20 00:08

前提・実現したいこと

まだ解決ができていません……。
質問内容で、おかしなところがあれば遠慮なくおっしゃっていただければわかる範囲で書きますので。

monacaでHTML5を使用したマルチプラットフォーム対応のモバイルアプリ開発を行っています。
GoogleMapsAPIを使用したマップ情報をローカルストレージに格納したいです。
しかし、下記エラーがでて困っています。

発生している問題・エラーメッセージ

iOSではエラーが出ずに動作しており、Androidでのみエラーがでます。

InvalidStateError: An attempt was made to use an object that is not, or is no longer, usable.

現在使用できない、あるいは使用できなくなったオブジェクト?
というエラーなのですが、使用できないという感覚もわからず、
対処法に困っています。
なぜiOSでは良くて(対応ができて)Androidではダメなのかも理解ができていません。
その辺りを中心にご教授いただけると大変有難いです。

試したこと

該当のソースコードでは以下のエラーが出現しました。

TypeError: Converting circular structure to JSON

循環オブジェクト参照構造体を文字列に変換できないということでした。
参考ページ
上記のエラーをなくすために参考ページを参考に
循環オブジェクト参照をチェックする記述を導入するとiOSではエラーがなくなり、
意図した動作を行うことができました。

修正前のソースコード

Javascript

1//地図の表示 2function createMap(){ 3 var map = new google.maps.Map( 4 document.getElementById('map_canvas'), 5 { 6 center: (new google.maps.LatLng(00.000, 000.0000)),//中心を指定 7 zoom: 18, // 地図のズーム 8 streetViewControl: false, //ストリートビュー 9 mapTypeControl: false, //mapタイプの切り替え 10 fullscreenControl: false, //フルスクリーン切り替え 11 zoomControl: true, //ズームコントロール 12 zoomControlOptions: false, //ズームボタン 13 styles: [{// マップのアイコン系の非表示 14 featureType: 'poi.business', 15 stylers: [{visibility: 'off' }] 16 }] 17 } 18 ); 19 //マップ情報登録 20 localStorage.setItem('map', JSON.stringify(map)); 21};

修正後のソースコード

Javascript

1//地図の表示 2function createMap(){ 3 var map = new google.maps.Map( 4 document.getElementById('map_canvas'), 5 { 6 center: (new google.maps.LatLng(00.000, 000.0000)),//中心を指定 7 zoom: 18, // 地図のズーム 8 streetViewControl: false, //ストリートビュー 9 mapTypeControl: false, //mapタイプの切り替え 10 fullscreenControl: false, //フルスクリーン切り替え 11 zoomControl: true, //ズームコントロール 12 zoomControlOptions: false, //ズームボタン 13 styles: [{// マップのアイコン系の非表示 14 featureType: 'poi.business', 15 stylers: [{visibility: 'off' }] 16 }] 17 } 18 ); 19 //マップ情報登録 20 seen = []; 21 var replacer = function(key, value) { 22 if (value != null && typeof value == "object") { 23 if (seen.indexOf(value) >= 0) { 24 return; 25 } 26 seen.push(value); 27 } 28 return value; 29 }; 30 localStorage.setItem('map', JSON.stringify(map, replacer)); 31};

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

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

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

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

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

guest

回答1

0

自己解決

LocalStorageでの問題は解決はしませんでしたが、
map情報をグローバル変数に入れることで解決しました。
なぜ今の今までこの方法を考えなかったか不思議なくらいです。
わざわざstorageに入れるまでもありませんでした。
お騒がせいたしました。

ただ、Object型の挙動についてなどは理解が深まっていないので
今後理解を深めていこうと思います。

投稿2018/06/20 07:27

bi_tsu

総合スコア35

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問