{"id":218,"date":"2014-05-27T12:02:20","date_gmt":"2014-05-27T12:02:20","guid":{"rendered":"http:\/\/www.honobono-life.info\/wpeng\/?p=218"},"modified":"2017-10-08T00:26:45","modified_gmt":"2017-10-08T00:26:45","slug":"place-details","status":"publish","type":"post","link":"http:\/\/www.honobono-life.info\/wpeng\/place-details\/","title":{"rendered":"Google Maps for AngularJS Place details"},"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 : 1.0.16<\/li>\r\n<li>include file<\/li>\r\nangular.min.js, 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 src=\"https:\/\/maps.googleapis.com\/maps\/api\/js?v=3.exp&#038;key=AIzaSyBy-VhEHgZFREbgrTWoXTTW04hEW-PyHdA&#038;sensor=false&#038;libraries=places\"><\/script>\r\n<script type='text\/javascript' src='http:\/\/www.honobono-life.info\/wpeng\/wp-content\/themes\/ang\/js\/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.js'><\/script>\r\n<script type='text\/javascript' src='http:\/\/www.honobono-life.info\/wpeng\/wp-content\/themes\/ang\/js\/place3.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-8\">\r\n      <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        event=\"map.event\"\r\n      >\r\n        <marker ng-repeat=\"m in map.markers\" coords=\"m\" click=\"onMarkerClicked(m)\">\r\n          <window show=\"m.showWindow\"\r\n                closeClick=\"closeClick(m)\"\r\n                templateUrl=\"map.templateUrl\"\r\n                templateParameter=\"map.templateParameter\"\r\n          >\r\n          <\/window>\r\n        <\/markers>\r\n      <\/google-map>\r\n    <\/div>\r\n    <div class=\"col-sm-4\">\r\n      <H4 class=\"well well-sm\">Place Text Search<\/H4>\r\n      <form class=\"form\" role=\"form\">\r\n        <div class=\"form-group\">\r\n          <label class=\"control-label\">Place text(ex.cafe)<\/label>\r\n          <input type=\"text\" class=\"form-control\" ng-model=\"place.query\">\r\n          <\/input>\r\n        <\/div>\r\n        <div class=\"form-group\">\r\n          <label class=\"control-label\">radius(meters)<\/label>\r\n          <input type=\"text\" class=\"form-control\" ng-model=\"place.radius\">\r\n          <\/input>\r\n        <\/div>\r\n        <button ng-click=\"placeSearch(place)\" type=\"submit\" class=\"btn btn-primary\">submit<\/button>\r\n        <button class=\"btn btn-danger\" ng-click=\"removeMarkers()\">Clear Map<\/button>\r\n      <\/form>\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 src=\"https:\/\/maps.googleapis.com\/maps\/api\/js?v=3.exp&key=xxxxxxxxxxxxxxxxxx&sensor=false&libraries=places\"&gt;&lt;\/script&gt;\r\n&lt;script type='text\/javascript' src='http:\/\/www.example.com\/wp\/wp-content\/themes\/ang\/js\/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-8\"&gt;\r\n      &lt;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        event=\"map.event\"\r\n      &gt;\r\n        &lt;marker ng-repeat=\"m in map.markers\" coords=\"m\" click=\"onMarkerClicked(m)\"&gt;\r\n          &lt;window show=\"m.showWindow\"\r\n                closeClick=\"closeClick(m)\"\r\n                templateUrl=\"map.templateUrl\"\r\n                templateParameter=\"map.templateParameter\"\r\n          &gt;\r\n          &lt;\/window&gt;\r\n        &lt;\/markers&gt;\r\n      &lt;\/google-map&gt;\r\n    &lt;\/div&gt;\r\n    &lt;div class=\"col-sm-4\"&gt;\r\n      &lt;H4 class=\"well well-sm\"&gt;Place Text Search&lt;\/H4&gt;\r\n      &lt;form class=\"form\" role=\"form\"&gt;\r\n        &lt;div class=\"form-group\"&gt;\r\n          &lt;label class=\"control-label\"&gt;Place text(ex.cafe)&lt;\/label&gt;\r\n          &lt;input type=\"text\" class=\"form-control\" ng-model=\"place.query\"&gt;\r\n          &lt;\/input&gt;\r\n        &lt;\/div&gt;\r\n        &lt;div class=\"form-group\"&gt;\r\n          &lt;label class=\"control-label\"&gt;radius(meters)&lt;\/label&gt;\r\n          &lt;input type=\"text\" class=\"form-control\" ng-model=\"place.radius\"&gt;\r\n          &lt;\/input&gt;\r\n        &lt;\/div&gt;\r\n        &lt;button ng-click=\"placeSearch(place)\" type=\"submit\" class=\"btn btn-primary\"&gt;submit&lt;\/button&gt;\r\n        &lt;button class=\"btn btn-danger\" ng-click=\"removeMarkers()\"&gt;Clear Map&lt;\/button&gt;\r\n      &lt;\/form&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','ui.bootstrap']);\r\n\r\nmapApp.controller(\"MyCtrl\", function ($scope) {\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: 16,\r\n      control: {},\r\n      markers: [],\r\n      templateUrl: 'assets\/templates\/place3.html',\r\n      templateParameter: {\r\n        name: '',\r\n        phone: '',\r\n        website: '',\r\n        html: '',\r\n        type: ''\r\n      }\r\n    },\r\n    place: '',\r\n    result: ''\r\n  });\r\n\r\n  $scope.placeSearch = function (place) {\r\n    var request = {\r\n      location: {\r\n         lat: $scope.map.center.latitude,\r\n         lng: $scope.map.center.longitude\r\n      },\r\n      radius: place.radius,\r\n      query: place.query\r\n    };\r\n    var map = $scope.map.control.getGMap();\r\n    var service = new google.maps.places.PlacesService(map);\r\n\r\n    service.textSearch(request, callback);\r\n    return;\r\n  };\r\n\r\n  var callback = function (results, status) {\r\n    if (status == google.maps.places.PlacesServiceStatus.OK) {\r\n      for (var i = 0; i < results.length; i++) {\r\n        createMarker(results[i]);\r\n      }\r\n    }\r\n  }\r\n\r\n  var createMarker = function (place) {\r\n    var request = {\r\n      reference: place.reference\r\n    };\r\n    var detail = new google.maps.places.PlacesService($scope.map.control.getGMap());\r\n    detail.getDetails(request, function(result, status) {\r\n      if (status == google.maps.places.PlacesServiceStatus.OK) {\r\n        $scope.map.markers.push({\r\n          latitude: place.geometry.location.lat(),\r\n          longitude: place.geometry.location.lng(),\r\n          showWindow: false,\r\n          name: result.name,\r\n          phone: result.formatted_phone_number,\r\n          website: result.website,\r\n          html: result.html_attributions[0],\r\n          type: result.types.toString()\r\n        });\r\n        $scope.$apply();\r\n      }\r\n    });\r\n  }\r\n  $scope.closeClick = function (marker) {\r\n    marker.showWindow = false;\r\n  };\r\n  $scope.onMarkerClicked = function (marker) {\r\n    marker.showWindow = true;\r\n    $scope.map.templateParameter = {\r\n      name: marker.name,\r\n      phone: marker.phone,\r\n      website: marker.website,\r\n      html: marker.html,\r\n      type: marker.type\r\n    }\r\n  };\r\n  $scope.removeMarkers = function () {\r\n    $scope.map.markers.length = 0;\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;Place&lt;\/strong&gt;\r\n  &lt;ul class=\"list-unstyled\"&gt;\r\n    &lt;li&gt;{ { parameter.name }}&lt;\/li&gt;\r\n    &lt;li&gt;{ { parameter.phone }}&lt;\/li&gt;\r\n    &lt;li&gt;{ { parameter.website }}&lt;\/li&gt;\r\n    &lt;li&gt;{ { parameter.html }}&lt;\/li&gt;\r\n    &lt;li&gt;{ { parameter.type }}&lt;\/li&gt;\r\n  &lt;\/ul&gt;\r\n&lt;\/div&gt;\r\n<\/pre>\r\n    <\/div><!-- \/.tab-pane -->\r\n\r\n  <\/div><!-- \/.tab-content -->\r\n<\/div><!-- \/.tabpanel -->\r\n","protected":false},"excerpt":{"rendered":"<p>AngularJS : 1.2.23 Bootstrap : 3.2.0 Google Maps for AngularJS : 1.0.16 include file angular.min.js, 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,45,46,44],"amp_enabled":true,"_links":{"self":[{"href":"http:\/\/www.honobono-life.info\/wpeng\/wp-json\/wp\/v2\/posts\/218"}],"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=218"}],"version-history":[{"count":9,"href":"http:\/\/www.honobono-life.info\/wpeng\/wp-json\/wp\/v2\/posts\/218\/revisions"}],"predecessor-version":[{"id":1442,"href":"http:\/\/www.honobono-life.info\/wpeng\/wp-json\/wp\/v2\/posts\/218\/revisions\/1442"}],"wp:attachment":[{"href":"http:\/\/www.honobono-life.info\/wpeng\/wp-json\/wp\/v2\/media?parent=218"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.honobono-life.info\/wpeng\/wp-json\/wp\/v2\/categories?post=218"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.honobono-life.info\/wpeng\/wp-json\/wp\/v2\/tags?post=218"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}