OpenStreetMap에서 쇠고기 덮밥에 대한 정보를 얻고 Android에 표시
7095 단어 안드로이드OpenStreetMaposmdroid
계속됩니다.
OpenStreetMap에서 규동 가게에 대한 정보를 얻기 전까지는
위의 기사를 참고로.
Android에 표시
모든 상점을 표시하는 대신,
가까운 상점을 볼 수 있습니다.
Json 구문 분석
Gson을 사용합니다.
Gson : Java serialization/deserialization for JSON
Json 의 기술 구조에 대응한 Java 클래스를 준비한다.
OsmJson.java
public class OsmJson {
public String version;
public String generator;
public Osm3s osm3s;
public List<Element> elements;
Osm3s.java
public class Osm3s {
public String timestamp_osm_base;
public String copyright;
Element.java
public class Element {
public String type;
public long id;
public double lat;
public double lon;
public Tags tags;
Tags.java
public class Tags {
public String name;
public String branch;
public String opening_hours;
// コロンが入っているキー名は、変数名として使えない
@SerializedName("addr:full")
public String addr_full;
public String getInfo() {
StringBuilder builder = new StringBuilder();
if(branch != null) {
builder.append(branch);
builder.append(LF);
}
if(opening_hours != null) {
builder.append("営業時間: ");
builder.append(opening_hours);
builder.append(LF);
}
// その他のタグ
return builder.toString();
}
OSM의 태그는 많기 때문에, 어디까지 대응할까 고민하다.
하기를 참고로 한다.
OpenStreetMatsuya
프로그램의 설명은 이것뿐.
Gson gson = new Gson();
OsmJson osm = gson.fromJson( text, OsmJson.class);
SQLite에 저장
이름(name), 위도(lat), 경도(lon), 정보(info)를 컬럼에 가지는 DB를 작성한다.
List<Element> elements = osm.getElements();
for (Element ele: elements) {
NodeRecord r = new NodeRecord( ele.getName(), ele.getLat(), ele.getLon(), ele.getInfo() );
mHelper.insert( r );
}
근처의 규동점 검색
현재 위치를 동서남북의 테두리로 둘러싸고 그 안에 있는 점포를 검색한다
아래와 같은 조건구를 사용한다.
String where = " ( " + "lat" + " > " + 北側 ;
where += " AND " + "lat" + " < " + 南側 ;
where += " AND " + "lon" + " > " + 西側 ;
where += " AND " + "lon" + " < " + 東側 + " ) " ;
위도 방향의 지구의 원주는 약 4만 km이므로,
1m당 위도의 도수는 360도/4만km
도쿄 부근(위도 35도)에 있어서의 경도 방향의 지구의 원주는, 약 3.3만 km이므로,
1m당 경도도는 360도/3.3만km
마커로 표시
아래를 참고로
osmdroid를 사용하여 Android의 OpenStreetMap 지도에 마커 표시
스크린샷
요코하마시 관공서에서 5Km 범위
github에 소스를 게시했습니다.
OpenStreetMap에서 가져오고 규동의 Json 파일을 동봉합니다.
Reference
이 문제에 관하여(OpenStreetMap에서 쇠고기 덮밥에 대한 정보를 얻고 Android에 표시), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/ohwada/items/493bf0c23885ef3bf240텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)