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

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

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

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

1回答

643閲覧

GeoJsonを読み込みmaps sdk for iOSで使いたい、ランダムな地点にピンを挿したい

tafuzz

総合スコア15

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2019/03/10 14:26

編集2019/03/10 17:59

前提・実現したいこと

初めてこちらを利用します。

maps sdk for iOSのGoogleマップを使ったアプリを作ってます。
日本列島のどこかに乱数を用いてピンを挿したいです。

そのために
https://shimz.me/blog/google-map-api/5116
このURLみたくgeojsonを使い、アウトラインの中かの緯度経度をランダムで得たいです。

Swiftではどのように書けばいいでしょうか?
よろしくお願いします。

下のURLが参考になりそうです。
https://stackoverflow.com/questions/35167437/adding-geojson-layer-to-google-map-in-ios

該当のソースコード

json

1{"type":"FeatureCollection","crs":{"type":"name","properties":{"name":"urn:ogc:def:crs:EPSG::4612"}},"features":[ 2{"type":"Feature","geometry":{"type":"MultiPolygon","coordinates":[[[[133.24060801793277,35.550177232157246],[133.2894683123552,35.48048203925956],[133.42134076435934,35.45899422518409],[133.50453835340406,35.51573451628357],[133.85365621580095,35.50267696934571],[134.19070615592497,35.53634760578087],[134.5446130785855,35.667356593901964],[134.9300350601264,35.64833804176519],[135.11264858194016,35.745438632807044],[135.23174920096042,35.77017220283787],[135.290288650819,35.72153991955054],[135.2118128158953,35.58940572442837],[135.25344162314187,35.53604390651982],[135.48352837996947,35.556243294515426],[135.52704614243623,35.491762499349655],[135.719568677351,35.48979363404049],・・・・中略・・・・,[140.031777278948,42.69131305731013],[140.25382695528532,42.77116188494362],[140.43007875742063,42.94605006960432],[140.53028423439557,43.009447120360804],[140.46352199170653,43.09419308190028]]]]},"properties":{"ObjName":"To","ObjName_1":null,"JIS-CODE":31}} 3]} 4

GeoJsonファイルはこのように書いてあります。全部で3行です。

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

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

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

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

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

guest

回答1

0

うまくいく保証は無いですが、
アウトラインをUIBezierPathクラスで生成し、メンバ関数のcontainsで点がそのアウトライン内にあるかどうかを判定できます。
(精度が足りるかどうかはやってみないとわかりません)

精度に拘らなければ、判定用のでかい静止画を作ってピクセル値で判定しても良さそうです。

投稿2019/03/11 01:53

takabosoft

総合スコア8356

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

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

tafuzz

2019/03/11 18:14

なるほど!このようなやり方は思いつきませんでした。 geojsonファイルからアウトラインを生成する方法はどのような手順が良いでしょうか? 初学者として思いついたのはプロジェクトに追加したgeojsonを少し書き換えて、本州、北海道、九州、四国、沖縄それぞれの配列を作るという感じです。
takabosoft

2019/03/12 01:39

geojsonのフォーマット資料を今から読む気力は私には無いですが↓↓ https://s.kitazaki.name/docs/geojson-spec-ja.html#multipolygon それにあわせて、UIBezierPathクラスにアウトラインをうまいこと流し込んでください、としか言えません。 たぶん、島や湖などはこのgeojsonに含まれていると思うので、むやみにデータを書き換えるよりは、このjsonを素直に解釈してそこからUIBezierPathクラスに落とし込んだ方が良さそうです。 UIBezierPathでマルチポリゴンや穴を開けれたかなどは、たしか出来たと思いますが、 実験してみてください。 (そもそもできなかったらごめんなさい)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問