{"id":812,"date":"2014-11-19T09:12:17","date_gmt":"2014-11-19T09:12:17","guid":{"rendered":"http:\/\/www.honobono-life.info\/wpeng\/?p=812"},"modified":"2017-10-07T01:52:52","modified_gmt":"2017-10-07T01:52:52","slug":"google-maps-for-angularjs-place-autocompletev2-0-7","status":"publish","type":"post","link":"http:\/\/www.honobono-life.info\/wpeng\/google-maps-for-angularjs-place-autocompletev2-0-7\/","title":{"rendered":"Google Maps for AngularJS Place Autocomplete(v2.0.7)"},"content":{"rendered":"<ul>\r\n<li>AngularJS : 1.2.23<\/li>\r\n<li>Bootstrap : 3.2.0<\/li>\r\n<li>Google Maps for AngularJS : 2.0.7<\/li>\r\n<li>include file<\/li>\r\nangular.min.js, lodash.underscore.min.js, angular-google-maps.min.js, ui-bootstrap-tpls-0.11.0.min.js\r\n<\/ul>\r\n<!--more-->\r\n<script type='text\/javascript' src='http:\/\/www.honobono-life.info\/wpeng\/wp-content\/themes\/ang\/js\/angular.min.js'><\/script><script type='text\/javascript' src='http:\/\/www.honobono-life.info\/wpeng\/wp-content\/themes\/ang\/js\/ui-bootstrap-tpls-0.11.0.min.js'><\/script><script type='text\/javascript' src='http:\/\/www.honobono-life.info\/wpeng\/wp-content\/themes\/ang\/js\/lodash.underscore.min.js'><\/script>\r\n<script type='text\/javascript' src='http:\/\/www.honobono-life.info\/wpeng\/wp-content\/themes\/ang\/js\/angular-google-maps.min-2.0.7.js'><\/script>\r\n<script type='text\/javascript' src='http:\/\/www.honobono-life.info\/wpeng\/wp-content\/themes\/ang\/js\/place4-v2.js'><\/script>\r\n<div ng-app=\"googleMapApp\" role=\"tabpanel\">\r\n  <ul class=\"nav nav-tabs\">\r\n    <li class=\"active\"><a href=\"#demo1\" data-toggle=\"tab\">demo<\/a><\/li>\r\n    <li><a href=\"#html1\" data-toggle=\"tab\">markup<\/a><\/li>\r\n    <li><a href=\"#script1\" data-toggle=\"tab\">script<\/a><\/li>\r\n    <li><a href=\"#template1\" data-toggle=\"tab\">template<\/a><\/li>\r\n  <\/ul>\r\n  <div class=\"tab-content\">\r\n    <div class=\"tab-pane active\" id=\"demo1\">\r\n\r\n<div ng-controller=\"MyCtrl\">\r\n<div class=\"row\">\r\n  <div class=\"col-sm-12\">\r\n    <ui-gmap-google-map \r\n      id=\"map-canvas\"\r\n      center=\"map.center\"\r\n      zoom=\"map.zoom\"\r\n      draggable=\"true\"\r\n      options=\"map.options\"\r\n      control=\"map.control\"\r\n      events=\"map.events\"\r\n    >\r\n      <ui-gmap-marker idKey=\"map.marker.id\" coords=\"map.marker\" icon=\"map.marker.icon\"  \r\n                options=\"map.marker.options\">\r\n        <ui-gmap-window show=\"map.marker.showWindow\"\r\n                options=\"map.window.options\"\r\n                templateUrl=\"map.window.templateUrl\"\r\n                templateParameter=\"map.window.templateParameter\"\r\n          >\r\n        <\/ui-gmap-window>\r\n      <\/ui-gmap-marker>\r\n    <\/ui-gmap-google-map>\r\n    \r\n    <div id=\"type-selector\" class=\"well well-sm\">\r\n      <form class=\"form-inline\">\r\n        <div class=\"radio\">\r\n          <label>\r\n            <input type=\"radio\" name=\"type\" id=\"changetype-all\" checked>\r\n            All\r\n          <\/label>\r\n        <\/div>\r\n        <div class=\"radio\">\r\n          <label>\r\n            <input type=\"radio\" name=\"type\" id=\"changetype-establishment\">\r\n            Establishments\r\n          <\/label>\r\n        <\/div>\r\n        <div class=\"radio\">\r\n          <label>\r\n            <input type=\"radio\" name=\"type\" id=\"changetype-geocode\">\r\n            Geocodes\r\n          <\/label>\r\n        <\/div>\r\n      <\/form>\r\n    <\/div>\r\n    <input id=\"pac-input\" class=\"form-control\" type=\"text\" placeholder=\"Enter a location\">\r\n  <\/div>\r\n<\/div>\r\n<\/div>\r\n\r\n    <\/div>\r\n    <div class=\"tab-pane\" id=\"html1\">\r\n<pre>\r\n&lt;script type='text\/javascript' src='http:\/\/www.example.com\/wp\/wp-content\/themes\/ang\/js\/lodash.underscore.min.js'>&lt;\/script>\r\n&lt;script type='text\/javascript' src='http:\/\/www.example.com\/wp\/wp-content\/themes\/ang\/js\/angular-google-maps.min.js'>&lt;\/script>\r\n&lt;script type='text\/javascript' src='http:\/\/www.example.com\/wp\/wp-content\/themes\/ang\/js\/app.js'&gt;&lt;\/script&gt;\r\n\r\n&lt;div ng-controller=\"MyCtrl\"&gt;\r\n&lt;div class=\"row\"&gt;\r\n  &lt;div class=\"col-sm-12\"&gt;\r\n    &lt;ui-gmap-google-map \r\n      id=\"map-canvas\"\r\n      center=\"map.center\"\r\n      zoom=\"map.zoom\"\r\n      draggable=\"true\"\r\n      options=\"map.options\"\r\n      control=\"map.control\"\r\n      events=\"map.events\"\r\n    &gt;\r\n      &lt;ui-gmap-marker idKey=\"map.marker.id\" coords=\"map.marker\" icon=\"map.marker.icon\"\r\n              options=\"map.marker.options\"&gt;\r\n        &lt;ui-gmap-window show=\"map.marker.showWindow\"\r\n                options=\"map.window.options\"\r\n                templateUrl=\"map.window.templateUrl\"\r\n                templateParameter=\"map.window.templateParameter\"\r\n          &gt;\r\n        &lt;\/ui-gmap-window&gt;\r\n      &lt;\/ui-gmap-marker&gt;\r\n    &lt;\/ui-gmap-google-map&gt;\r\n    \r\n    &lt;div id=\"type-selector\" class=\"well well-sm\"&gt;\r\n      &lt;form class=\"form-inline\"&gt;\r\n        &lt;div class=\"radio\"&gt;\r\n          &lt;label&gt;\r\n            &lt;input type=\"radio\" name=\"type\" id=\"changetype-all\" checked&gt;\r\n            All\r\n          &lt;\/label&gt;\r\n        &lt;\/div&gt;\r\n        &lt;div class=\"radio\"&gt;\r\n          &lt;label&gt;\r\n            &lt;input type=\"radio\" name=\"type\" id=\"changetype-establishment\"&gt;\r\n            Establishments\r\n          &lt;\/label&gt;\r\n        &lt;\/div&gt;\r\n        &lt;div class=\"radio\"&gt;\r\n          &lt;label&gt;\r\n            &lt;input type=\"radio\" name=\"type\" id=\"changetype-geocode\"&gt;\r\n            Geocodes\r\n          &lt;\/label&gt;\r\n        &lt;\/div&gt;\r\n      &lt;\/form&gt;\r\n    &lt;\/div&gt;\r\n    &lt;input id=\"pac-input\" class=\"form-control\" type=\"text\" placeholder=\"Enter a location\"&gt;\r\n  &lt;\/div&gt;\r\n&lt;\/div&gt;\r\n&lt;\/div&gt;\r\n<\/pre>\r\n    <\/div>\r\n\r\n    <div class=\"tab-pane\" id=\"script1\">\r\n<pre>\r\nvar mapApp = angular.module('googleMapApp', ['google-maps'.ns(),'ui.bootstrap']);\r\nmapApp.config(['GoogleMapApiProvider'.ns(), function (GoogleMapApi) {\r\n  GoogleMapApi.configure({\r\n    key: 'your Google Map api key',\r\n    v: '3.17',\r\n    libraries: 'places'\r\n  });\r\n}]);\r\n\r\nmapApp.controller(\"MyCtrl\",['$scope', 'GoogleMapApi'.ns(), function ($scope,GoogleMapApi) {\r\n\r\n  angular.extend($scope, {\r\n    map: {\r\n      center: {\r\n        latitude: 35.681382,\r\n        longitude: 139.766084\r\n      },\r\n      options: {\r\n        maxZoom: 20,\r\n        minZoom: 3\r\n      },\r\n      zoom: 15,\r\n      control: {},\r\n      marker: {id: 1},\r\n      window: {\r\n        templateUrl: 'assets\/templates\/place4.html',\r\n        templateParameter: {\r\n          name: '',\r\n          address: ''\r\n        },\r\n        options: {\r\n          pixelOffset: {\r\n            height: -50,\r\n            width: 20\r\n          }\r\n        }\r\n      },\r\n      events: { \r\n        projection_changed: function (map, eventName, originalEventArgs) {\r\n          var types = document.getElementById('type-selector');\r\n          var input = document.getElementById('pac-input');\r\n          map.controls[google.maps.ControlPosition.TOP_LEFT].push(types);\r\n          map.controls[google.maps.ControlPosition.TOP_LEFT].push(input);\r\n          var defaultBounds = new google.maps.LatLngBounds(\r\n            new google.maps.LatLng(35.690903370337175, 139.74145889282227),\r\n            new google.maps.LatLng(35.67166118960477, 139.780855178833)\r\n          );\r\n          var options = {\r\n            bounds: defaultBounds,\r\n            types: ['establishment']\r\n          };\r\n          var autocomplete = new google.maps.places.Autocomplete(input,options);\r\n\r\n          autocomplete.bindTo('bounds', map);\r\n          google.maps.event.addListener(autocomplete, 'place_changed', function() {\r\n            var place = autocomplete.getPlace();\r\n            if (!place.geometry) {\r\n              return;\r\n            } \r\n            if (place.geometry.viewport) {\r\n              map.fitBounds(place.geometry.viewport);\r\n            } else {\r\n              map.setCenter(place.geometry.location);\r\n              map.setZoom(17);\r\n            }\r\n            $scope.map.marker.latitude = place.geometry.location.lat();\r\n            $scope.map.marker.longitude = place.geometry.location.lng();\r\n            $scope.map.marker.id = 1;\r\n            $scope.map.marker.icon = place.icon;\r\n            \r\n            $scope.map.marker.showWindow = true;\r\n            var address = '';\r\n            if (place.address_components) {\r\n              address = [\r\n               (place.address_components[0] && place.address_components[0].short_name || ''),\r\n               (place.address_components[1] && place.address_components[1].short_name || ''),\r\n               (place.address_components[2] && place.address_components[2].short_name || '')\r\n              ].join(' ');\r\n            }\r\n            $scope.map.window.templateParameter.name = place.name;\r\n            $scope.map.window.templateParameter.address = address;\r\n          });\r\n          var setupClickListener = function (id, types) {\r\n            var radioButton = document.getElementById(id);\r\n            google.maps.event.addDomListener(radioButton, 'click', function() {\r\n              autocomplete.setTypes(types);\r\n            });\r\n          }\r\n          setupClickListener('changetype-all', []);\r\n          setupClickListener('changetype-establishment', ['establishment']);\r\n          setupClickListener('changetype-geocode', ['geocode']);\r\n        }\r\n      }\r\n    }\r\n  });\r\n}]);\r\n<\/pre>\r\n    <\/div><!-- \/.tab-pane -->\r\n\r\n    <div class=\"tab-pane\" id=\"template1\">\r\n<pre>\r\n&lt;div&gt;\r\n  &lt;strong&gt;{  { parameter.name }}&lt;\/strong&gt;&lt;br \/&gt;\r\n  {  { parameter.address }}\r\n&lt;\/div&gt;\r\n<\/pre>\r\n    <\/div><!-- \/.tab-pane -->\r\n\r\n  <\/div><!-- \/.tab-content -->\r\n<\/div><!-- \/.tabpanel -->","protected":false},"excerpt":{"rendered":"<p>AngularJS : 1.2.23 Bootstrap : 3.2.0 Google Maps for AngularJS : 2.0.7 include file angular.min.js, lodash.underscore.min.js, angular-google-maps.min.js, ui-bootstrap-tpls-0.11.0.min.js<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[35,51,83],"amp_enabled":true,"_links":{"self":[{"href":"http:\/\/www.honobono-life.info\/wpeng\/wp-json\/wp\/v2\/posts\/812"}],"collection":[{"href":"http:\/\/www.honobono-life.info\/wpeng\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.honobono-life.info\/wpeng\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.honobono-life.info\/wpeng\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.honobono-life.info\/wpeng\/wp-json\/wp\/v2\/comments?post=812"}],"version-history":[{"count":9,"href":"http:\/\/www.honobono-life.info\/wpeng\/wp-json\/wp\/v2\/posts\/812\/revisions"}],"predecessor-version":[{"id":1362,"href":"http:\/\/www.honobono-life.info\/wpeng\/wp-json\/wp\/v2\/posts\/812\/revisions\/1362"}],"wp:attachment":[{"href":"http:\/\/www.honobono-life.info\/wpeng\/wp-json\/wp\/v2\/media?parent=812"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.honobono-life.info\/wpeng\/wp-json\/wp\/v2\/categories?post=812"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.honobono-life.info\/wpeng\/wp-json\/wp\/v2\/tags?post=812"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}