地図を扱う時にGeoJSONが使えると便利だそうなので調べる。
GeoJSON
{}がオブジェクト。[]が配列。JSONっていう形式があって、その派生みたい。FeatureCollection > Feature > Point > coordinatesみたいなのを作りたい。
JSONObject・JSONArray
この2つを使うとJSON形式が作れるようで、GeoJSONは特定のname, valueを含めてけばいいようだ。
public class GeoJASONMainActivity extends AppCompatActivity { TextView tv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_geo_jasonmain); tv = findViewById(R.id.editText); makeJSON(); } void makeJSON() { String[] list = {"138.7306,35.3625", "141.936667,45.5225", "123.805056,24.049806", "145.816278,43.385056", "123.004722,24.468333"}; JSONObject json = new JSONObject(); JSONObject nullobj = new JSONObject(); String[] listr = new String[5000]; for (int i = 0; i <= 4999; i++) { Random r = new Random(); double randomValueLat = 123.004722 + (145.816278 - 123.004722) * r.nextDouble(); double randomValueLon = 24.049806 + (45.5225 - 24.049806) * r.nextDouble(); listr[i] = String.valueOf(randomValueLat) + "," + String.valueOf(randomValueLon); } try { json.put("type", "FeatureCollection"); JSONArray featureList = new JSONArray(); for (String obj : listr) { JSONObject point = new JSONObject(); point.put("type", "Point"); JSONArray coord = new JSONArray("[" + obj + "]"); point.put("coordinates", coord); JSONObject feature = new JSONObject(); feature.put("type", "Feature"); feature.put("properties", nullobj); feature.put("geometry", point); featureList.put(feature); json.put("features", featureList); } } catch (JSONException e) { e.printStackTrace(); } tv.setText(json.toString()); } }
で、こうなった。editTextに表示させてる。
そんで、いったんPCに送ってgeojson.ioで表示してみた。
富士山+東西南北端
100個
1000個
5000個
10000個もやってみたけど重すぎて途中でやめた。
参考
https://s.kitazaki.name/docs/geojson-spec-ja.html
GeoJSON - Wikipedia
日本の端の一覧 - Wikipedia
Attention Required! | Cloudflare
JSONきれい ~JSON整形ツール~ - instant tools
geojson.io | powered by Mapbox
A quick, simple tool for creating, viewing, and sharing spatial data.
『[Android] Edittext 文字数制限と自動折り返し』
inputTypeにMultiLine属性を入れると自動折り返し。
コメント