{"id":992,"date":"2015-03-05T01:20:16","date_gmt":"2015-03-05T01:20:16","guid":{"rendered":"http:\/\/www.honobono-life.info\/wpeng\/?p=992"},"modified":"2017-10-06T23:37:08","modified_gmt":"2017-10-06T23:37:08","slug":"google-maps-with-dart-place-searches","status":"publish","type":"post","link":"http:\/\/www.honobono-life.info\/wpeng\/google-maps-with-dart-place-searches\/","title":{"rendered":"Google Maps with Dart Place searches"},"content":{"rendered":"<ul>\n<li>Dart : 1.8.5<\/li>\n<li>Bootstrap : 3.2.0<\/li>\n<li>include file<\/li>\n<p>dart.js,interop.js\n<\/ul>\n<p><!--more--><br \/>\n<script type=\"text\/javascript\" src=\"http:\/\/maps.googleapis.com\/maps\/api\/js?key=AIzaSyArJcThvMs4MtAlxahZB6VR2lvsqzBzz3M&#038;sensor=false&#038;libraries=places\"><\/script><\/p>\n<div role=\"tabpanel\">\n<ul class=\"nav nav-tabs\">\n<li class=\"nav-item\"><button class=\"nav-link active\" data-bs-toggle=\"tab\" data-bs-target=\"#demo1\">demo<\/button><\/li>\n<li class=\"nav-item\"><button class=\"nav-link\" data-bs-toggle=\"tab\" data-bs-target=\"#html1\">markup<\/button><\/li>\n<li class=\"nav-item\"><button class=\"nav-link\" data-bs-toggle=\"tab\" data-bs-target=\"#script1\">script<\/button><\/li>\n<\/ul>\n<div class=\"tab-content\">\n<div class=\"tab-pane fade show active\" id=\"demo1\">\n<style type=\"text\/css\">\n  #map-canvas { height: 400px }\n<\/style>\n<div class=\"row\">\n<div class=\"col-sm-8\">\n<div id=\"map-canvas\"><\/div>\n<\/p><\/div>\n<div class=\"col-sm-4\">\n<div class=\"form-group\">\n      <label class=\"control-label\">Place types(ex.finance)<\/label><br \/>\n      <input type=\"text\" class=\"form-control\" id=\"place_types\">\n    <\/div>\n<div class=\"form-group\">\n      <label class=\"control-label\">radius(meters)<\/label><br \/>\n      <input type=\"text\" class=\"form-control\" id=\"place_radius\">\n    <\/div>\n<p>    <button id=\"place_search\" type=\"submit\" class=\"btn btn-primary\">Submit<\/button><br \/>\n    <button id=\"clear_map\" type=\"submit\" class=\"btn btn-danger\">Clear Map<\/button>\n  <\/div>\n<\/div><\/div>\n<div class=\"tab-pane fade\" id=\"html1\">\n<pre>\r\n&lt;script type=\"text\/javascript\" src=\"http:\/\/maps.googleapis.com\/maps\/api\/js?key=\u30fb\u30fb\u30fb\u30fb&sensor=false&libraries=places\">&lt;\/script>\r\n&lt;link rel=\"stylesheet\" href=\"css\/bootstrap.min.css\">\r\n&lt;style type=\"text\/css\">\r\n  #map-canvas { height: 400px }\r\n&lt;\/style>\r\n&lt;div class=\"row\">\r\n  &lt;div class=\"col-sm-8\">\r\n    &lt;div id=\"map-canvas\">&lt;\/div>\r\n  &lt;\/div>\r\n  &lt;div class=\"col-sm-4\">\r\n    &lt;div class=\"form-group\">\r\n      &lt;label class=\"control-label\">Place types(ex.finance)&lt;\/label>\r\n      &lt;input type=\"text\" class=\"form-control\" id=\"place_types\">\r\n    &lt;\/div>\r\n    &lt;div class=\"form-group\">\r\n      &lt;label class=\"control-label\">radius(meters)&lt;\/label>\r\n      &lt;input type=\"text\" class=\"form-control\" id=\"place_radius\">\r\n    &lt;\/div>\r\n    &lt;button id=\"place_search\" type=\"submit\" class=\"btn btn-primary\">Submit&lt;\/button>\r\n    &lt;button id=\"clear_map\" type=\"submit\" class=\"btn btn-danger\">Clear Map&lt;\/button>\r\n  &lt;\/div>\r\n&lt;\/div>\r\n&lt;script type=\"application\/dart\" src='http:\/\/www.example.com\/wp\/wp-content\/themes\/ang\/dart\/addr-pos\/index.dart'>&lt;\/script>\r\n&lt;script src='http:\/\/www.example.com\/wp\/wp-content\/themes\/ang\/dart\/packages\/browser\/dart.js'>&lt;\/script>\r\n&lt;script src='http:\/\/www.example.com\/wp\/wp-content\/themes\/ang\/dart\/packages\/browser\/interop.js'>&lt;\/script>\r\n<\/pre>\n<\/p><\/div>\n<div class=\"tab-pane fade\" id=\"script1\">\n<pre>\r\nlibrary google_maps;\r\n\r\nimport 'dart:html' show querySelector;\r\nimport 'dart:js' show context, JsObject;\r\n\r\nfinal google_maps = context['google']['maps'];\r\nvar map;\r\nvar infowindow;\r\nvar markers = new List();\r\n\r\ncreateMarker(place) {\r\n  var placeLoc = place['geometry']['location'];\r\n  var markerOptions = new JsObject.jsify({\r\n    \"map\": map,\r\n    \"position\": placeLoc\r\n  });\r\n  var marker = new JsObject(google_maps['Marker'], [markerOptions]);\r\n  markers.add(marker);\r\n  google_maps['event'].callMethod('addListener', [marker, 'click', (event) {\r\n    infowindow.callMethod('setContent',[place['name']]);\r\n    infowindow.callMethod('open',[map,marker]);\r\n  }]);\r\n}\r\n\r\nvoid main() {\r\n  var center = new JsObject(google_maps['LatLng'], [35.6814, 139.7661]);\r\n  var mapTypeId = google_maps['MapTypeId']['ROADMAP'];\r\n  var mapOptions = new JsObject.jsify({\r\n    \"center\": center,\r\n    \"zoom\": 15,\r\n    \"mapTypeId\": mapTypeId\r\n  });\r\n  map = new JsObject(google_maps['Map'], [querySelector('#map-canvas'), mapOptions]);\r\n  infowindow = new JsObject(google_maps['InfoWindow'], []);\r\n  \r\n  var service = new JsObject(google_maps['places']['PlacesService'], [map]);\r\n  var placeSearch = querySelector('#place_search');\r\n  placeSearch.onClick.listen((event) {\r\n    var place_types = querySelector('#place_types');\r\n    var place_radius = querySelector('#place_radius');\r\n    var request = new JsObject.jsify({\r\n      'location': center,\r\n      'radius': place_radius.value,\r\n      'types': [place_types.value]\r\n    }); \r\n    service.callMethod('nearbySearch',[request, (results, status,page) {\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  \r\n  var clearMap = querySelector('#clear_map');\r\n  clearMap.onClick.listen((event) {\r\n    for(var marker in markers) {\r\n      marker.callMethod('setMap',[null]);\r\n    }\r\n  });\r\n}\r\n<\/pre>\n<\/p><\/div>\n<p><!-- \/.tab-pane --><\/p><\/div>\n<p><!-- \/.tab-content -->\n<\/div>\n<p><!-- \/.tabpanel --><br \/>\n<script type=\"application\/dart\" src='http:\/\/www.honobono-life.info\/wpeng\/wp-content\/themes\/ang\/dart\/place1\/index.dart'><\/script><br \/>\n<script src='http:\/\/www.honobono-life.info\/wpeng\/wp-content\/themes\/ang\/dart\/packages\/browser\/dart.js'><\/script><br \/>\n<script src='http:\/\/www.honobono-life.info\/wpeng\/wp-content\/themes\/ang\/dart\/packages\/browser\/interop.js'><\/script><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Dart : 1.8.5 Bootstrap : 3.2.0 include file dart.js,interop.js<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[101],"tags":[100,41,40],"class_list":["post-992","post","type-post","status-publish","format-standard","hentry","category-google-maps-with-dart","tag-dart","tag-nearbysearch","tag-placesservice"],"amp_enabled":true,"_links":{"self":[{"href":"http:\/\/www.honobono-life.info\/wpeng\/wp-json\/wp\/v2\/posts\/992","targetHints":{"allow":["GET"]}}],"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=992"}],"version-history":[{"count":3,"href":"http:\/\/www.honobono-life.info\/wpeng\/wp-json\/wp\/v2\/posts\/992\/revisions"}],"predecessor-version":[{"id":1323,"href":"http:\/\/www.honobono-life.info\/wpeng\/wp-json\/wp\/v2\/posts\/992\/revisions\/1323"}],"wp:attachment":[{"href":"http:\/\/www.honobono-life.info\/wpeng\/wp-json\/wp\/v2\/media?parent=992"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.honobono-life.info\/wpeng\/wp-json\/wp\/v2\/categories?post=992"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.honobono-life.info\/wpeng\/wp-json\/wp\/v2\/tags?post=992"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}