程式碼如下:
Geocoder geoCoder = new Geocoder(MainActivity.this, Locale.getDefault());
List<Address> addressLocation = geoCoder.getFromLocationName(
store_add,
1);
if(addressLocation.size()<=0){
double latitude = 34.058621;
double longitude =-118.246938;
Log.d("Jack", String.valueOf(latitude) + "," + String.valueOf(longitude));
MarkerOptions mo2 = new MarkerOptions();
mo2.position(new LatLng(latitude, longitude))
.snippet("")
.title("")
.icon(BitmapDescriptorFactory.fromResource(R.drawable.icon_live));
Marker marker2 = mMap.addMarker(mo2);
mMarkers.add(marker2);
}else{
double latitude = addressLocation.get(0).getLatitude();
double longitude = addressLocation.get(0).getLongitude();
Log.d("Jack", String.valueOf(latitude) + "," + String.valueOf(longitude));
MarkerOptions mo = new MarkerOptions();
mo.position(new LatLng(latitude, longitude))
.snippet(zone)
.title(store)
.icon(BitmapDescriptorFactory.fromResource(R.drawable.icon_live));
Marker marker = mMap.addMarker(mo);
mMarkers.add(marker);
}
store_add 是 String 看你要給一個地址 給使用者輸入地址 或者爬Json 的地址
都可以放到這個值
1 是 要回傳幾筆資料 這邊建議 輸入1 就好
if(addressLocation.size()<=0) 會用迴圈 是因為 可以取的地址會無法轉成經緯度
所以用迴圈去判斷 取的是否小於0這個值
double latitude = addressLocation.get(0).getLatitude();
double longitude = addressLocation.get(0).getLongitude();
這就是為什麼要去用迴圈做判斷的原因
因為用Geocoder 地址轉經緯度 拿到的值可能不只一個 所以要用最相近的值
所以才要 .get(0)
之後取出來 就可以畫在google map 上了
MarkerOptions mo = new MarkerOptions();
mo.position(new LatLng(latitude, longitude))
.snippet(zone)
.title(store)
.icon(BitmapDescriptorFactory.fromResource(R.drawable.icon_live));
Marker marker = mMap.addMarker(mo);
mMarkers.add(marker);