{"id":525,"date":"2016-11-27T08:20:44","date_gmt":"2016-11-26T23:20:44","guid":{"rendered":"http:\/\/blue-bear.jp\/kb\/?p=525"},"modified":"2016-11-27T08:31:55","modified_gmt":"2016-11-26T23:31:55","slug":"android-googlemapsdk%e3%82%92%e4%bd%bf%e3%81%a3%e3%81%a6map%e5%ae%9f%e8%a3%85","status":"publish","type":"post","link":"https:\/\/blue-bear.jp\/kb\/android-googlemapsdk%e3%82%92%e4%bd%bf%e3%81%a3%e3%81%a6map%e5%ae%9f%e8%a3%85\/","title":{"rendered":"[android] GoogleMapSDK\u3092\u4f7f\u3063\u3066MAP\u5b9f\u88c5"},"content":{"rendered":"<h2>GoogleMapSDK\u3092\u4f7f\u3063\u3066MAP\u5b9f\u88c5<\/h2>\n<h3>\u4ee5\u4e0b\u306e\u6a5f\u80fd\u3092\u5b9f\u88c5<\/h3>\n<p>\u30fbPin\u3092\u597d\u304d\u306a\u753b\u50cf\u306b\u30ab\u30b9\u30bf\u30de\u30a4\u30ba<br \/>\n\u30fb\u30b7\u30fc\u30af\u30d0\u30fc\u3067\u4e2d\u5fc3\u304b\u3089\u306e\u5186\u306e\u534a\u5f84\u3092\u5909\u66f4\u2192\u540c\u6642\u306bGoogleMAP\u306e\u5186\u306e\u63cf\u753b\u3082\u5909\u66f4<br \/>\n\u30fbMAP\u3092\u30bf\u30c3\u30d7\u3059\u308b\u3068\u5186\u3068\u30a2\u30a4\u30b3\u30f3\u304c\u30bf\u30c3\u30d7\u3057\u305f\u4f4d\u7f6e\u306b\u5909\u66f4\u2192\u30ab\u30e1\u30e9\u3082\u30a2\u30cb\u30e1\u30fc\u30b7\u30e7\u30f3\u3067\u79fb\u52d5<br \/>\n\u30fb\u30c6\u30ad\u30b9\u30c8\u8868\u793a\u3059\u308b\u534a\u5f84\u306f\uff13\u6841\u533a\u5207\u308a\u3067m\u3067\u8868\u793a<br \/>\n\u30fb\u30b7\u30fc\u30af\u30d0\u30fc\u306e\u6700\u5c0f\u5024\u309210m\u3001\u6700\u5927\u50242000\uff4d\u306b\u8a2d\u5b9a<br \/>\n\u30fbcolor.xml\u306b\u5186\u306e\u5857\u308a\u3064\u3076\u3057\u3068\u7dda\u306e\u30ab\u30e9\u30fc\u3092\u767b\u9332\u3001resource\u304b\u3089\u30a2\u30af\u30bb\u30b9<\/p>\n<h3>MainActivity.java<\/h3>\n<pre>\r\n    private SeekBar sb0;\r\n    private TextView tv0;\r\n\r\n    private GoogleMap mMap;\r\n    private int minRange;\r\n    private int radius;\r\n    private Bitmap makerImage;\r\n    private LatLng location;\r\n    private Circle circle;\r\n    private CircleOptions circleOptions;\r\n    private float zoom;\r\n    private Resources res;\r\n\r\n\r\n    @Override\r\n    protected void onCreate(Bundle savedInstanceState) {\r\n        super.onCreate(savedInstanceState);\r\n        setContentView(R.layout.activity_main);\r\n\r\n        sb0 = (SeekBar)findViewById(R.id.seek);\r\n        tv0 = (TextView)findViewById(R.id.textView);\r\n        minRange = 10;\r\n        location = new LatLng(-34, 151);\r\n        zoom = 14;\r\n        res = getResources();\r\n\r\n        \/\/GoogleMap\u8a2d\u5b9a\r\n        SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()\r\n                .findFragmentById(R.id.mapFragment);\r\n        mapFragment.getMapAsync(this);\r\n\r\n\r\n        \/\/SeekBar\u8a2d\u5b9a\r\n        _changedTextRange(_changedTextRange(sb0.getProgress())); \/\/\u521d\u671f\u5024\u8a2d\u5b9a\r\n\r\n        sb0.setOnSeekBarChangeListener(\r\n                new SeekBar.OnSeekBarChangeListener() {\r\n                    public void onProgressChanged(SeekBar seekBar,\r\n                                                  int progress, boolean fromUser) {\r\n                        \/\/ \u30c4\u30de\u30df\u3092\u30c9\u30e9\u30c3\u30b0\u3057\u305f\u3068\u304d\u306b\u547c\u3070\u308c\u308b\r\n                        _changedTextRange(sb0.getProgress());\r\n                        circle.setRadius(sb0.getProgress());\r\n\r\n                    }\r\n\r\n                    public void onStartTrackingTouch(SeekBar seekBar) {\r\n                        \/\/ \u30c4\u30de\u30df\u306b\u89e6\u308c\u305f\u3068\u304d\u306b\u547c\u3070\u308c\u308b\r\n                    }\r\n\r\n                    public void onStopTrackingTouch(SeekBar seekBar) {\r\n                        \/\/ \u30c4\u30de\u30df\u3092\u96e2\u3057\u305f\u3068\u304d\u306b\u547c\u3070\u308c\u308b\r\n                    }\r\n                }\r\n        );\r\n\r\n    }\r\n\r\n    @Override\r\n    public void onMapReady(GoogleMap googleMap) {\r\n        mMap = googleMap;\r\n\r\n        mMap.setOnMapClickListener(new GoogleMap.OnMapClickListener() {\r\n            @Override\r\n            public void onMapClick(LatLng point) {\r\n                location = point;\r\n                _googleMapRemark(); \/\/pin\u3068Circle\u3092\u518d\u63cf\u753b\r\n                mMap.animateCamera(CameraUpdateFactory.newLatLng(point)); \/\/\u30a2\u30cb\u30e1\u30fc\u30b7\u30e7\u30f3\u3057\u306a\u304c\u3089\u30ab\u30e1\u30e9\u3092\u30bf\u30c3\u30d7\u4f4d\u7f6e\u306b\u79fb\u52d5\r\n            }\r\n        });\r\n\r\n\r\n        makerImage = BitmapFactory.decodeResource(getResources(),R.drawable.pinImage); \/\/pin\u3092pinImage\u3068\u3044\u3046\u753b\u50cf\u3067\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\r\n        mMap.moveCamera( CameraUpdateFactory.newLatLngZoom(location ,zoom) );\r\n        _googleMapMarkerCreate();\r\n        _googleMapCircleCreate();\r\n    }\r\n\r\n    private void _googleMapCircleCreate(){\r\n        final int version = Build.VERSION.SDK_INT;\r\n\r\n        \/\/API23\u304b\u3089res.getColor\u306f\u975e\u63a8\u5968\r\n        if (version >= 23) {\r\n            circleOptions = new CircleOptions()\r\n                    .center(location)\r\n                    .radius(radius)\r\n                    .fillColor(getColor(R.color.kBaseColorCircle))\r\n                    .strokeColor(getColor(R.color.kBaseColor));\r\n        } else {\r\n            circleOptions = new CircleOptions()\r\n                    .center(location)\r\n                    .radius(radius)\r\n                    .fillColor(res.getColor(R.color.kBaseColorCircle))\r\n                    .strokeColor(res.getColor(R.color.kBaseColor));\r\n        }\r\n\r\n        circle = mMap.addCircle(circleOptions);\r\n    }\r\n\r\n    private void _googleMapMarkerCreate(){\r\n        Marker melbourne = mMap.addMarker(new MarkerOptions()\r\n                .position(location)\r\n                .icon(BitmapDescriptorFactory.fromBitmap(makerImage)));\r\n    }\r\n\r\n    private void _googleMapRemark(){\r\n        mMap.clear();\r\n        _googleMapMarkerCreate();\r\n        _googleMapCircleCreate();\r\n    }\r\n    private void _changedTextRange(int range){\r\n        tv0.setText(String.format(\"%1$,3dm\", range));\r\n    }\r\n\r\n    private int _adjustRange(int range){\r\n        return range+minRange;\r\n    }\r\n<\/pre>\n<h3>activity_main.xml<\/h3>\n<pre>\r\n<RelativeLayout xmlns:android=\"http:\/\/schemas.android.com\/apk\/res\/android\"\r\n    xmlns:tools=\"http:\/\/schemas.android.com\/tools\"\r\n    android:id=\"@+id\/activity_main\"\r\n    android:layout_width=\"match_parent\"\r\n    android:layout_height=\"match_parent\"\r\n    tools:context=\"\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u540d.MainActivity\">\r\n\r\n\r\n    <fragment\r\n        android:id=\"@+id\/mapFragment\"\r\n        android:name=\"com.google.android.gms.maps.SupportMapFragment\"\r\n        android:layout_width=\"match_parent\"\r\n        android:layout_height=\"match_parent\"\r\n        \/>\r\n\r\n    <LinearLayout\r\n        android:layout_width=\"match_parent\"\r\n        android:layout_height=\"wrap_content\"\r\n        android:gravity=\"center\"\r\n        android:orientation=\"vertical\"\r\n        android:layout_alignParentStart=\"true\"\r\n        android:layout_alignParentBottom=\"true\"\r\n        android:layout_alignParentLeft=\"true\"\r\n        >\r\n\r\n        <SeekBar\r\n            android:layout_width=\"match_parent\"\r\n            android:layout_height=\"wrap_content\"\r\n            android:layout_marginLeft=\"30dp\"\r\n            android:layout_marginRight=\"30dp\"\r\n            android:id=\"@+id\/seek\"\r\n            android:progress=\"490\"\r\n            android:max=\"1990\"\r\n            \/>\r\n        <TextView\r\n            android:text=\"500m\"\r\n            android:layout_width=\"wrap_content\"\r\n            android:layout_height=\"wrap_content\"\r\n            android:id=\"@+id\/textView\"\r\n            android:textColor=\"@android:color\/white\"\r\n            \/>\r\n<\/RelativeLayout>\r\n\uff0a\u30b7\u30fc\u30af\u30d0\u30fc\u306e\u521d\u671f\u5024\u300candroid:progress\u300d\u3068\u6700\u5927\u5024\u300candroid:max\u300d\u306f\u6700\u5c0f\u5024\u309210\u306b\u3059\u308b\u305f\u3081\u306b10\u5f15\u3044\u3066\u3044\u308b\r\n\uff0a\u30b7\u30fc\u30af\u30d0\u30fc\u306e\u6700\u5c0f\u5024\u306f\uff10\u4ee5\u5916\u8a2d\u5b9a\u3067\u304d\u306a\u3044\u305f\u3081\u3001\u8868\u793a\u3092\uff0b\uff11\uff10\u3068\u3057\u3066\u3044\u308b\u305f\u3081\r\n\r\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>GoogleMapSDK\u3092\u4f7f\u3063\u3066MAP\u5b9f<\/p>\n","protected":false},"author":1,"featured_media":383,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[24],"tags":[19],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/blue-bear.jp\/kb\/wp-json\/wp\/v2\/posts\/525"}],"collection":[{"href":"https:\/\/blue-bear.jp\/kb\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blue-bear.jp\/kb\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blue-bear.jp\/kb\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blue-bear.jp\/kb\/wp-json\/wp\/v2\/comments?post=525"}],"version-history":[{"count":4,"href":"https:\/\/blue-bear.jp\/kb\/wp-json\/wp\/v2\/posts\/525\/revisions"}],"predecessor-version":[{"id":535,"href":"https:\/\/blue-bear.jp\/kb\/wp-json\/wp\/v2\/posts\/525\/revisions\/535"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blue-bear.jp\/kb\/wp-json\/wp\/v2\/media\/383"}],"wp:attachment":[{"href":"https:\/\/blue-bear.jp\/kb\/wp-json\/wp\/v2\/media?parent=525"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blue-bear.jp\/kb\/wp-json\/wp\/v2\/categories?post=525"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blue-bear.jp\/kb\/wp-json\/wp\/v2\/tags?post=525"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}