質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
CakePHP

CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

Q&A

解決済

1回答

2229閲覧

cakephp2.9 郵便番号から住所を取得し表示する

sueken2

総合スコア5

CakePHP

CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

0グッド

0クリップ

投稿2016/12/23 11:05

編集2016/12/23 23:48

###前提・実現したいこと
今私は、データベース内にある郵便番号を使いそれを緯度軽度になおし、googlemapで表示しようと思っています。そこで下のようなコードを書いて見たのですが、まるで表示されません。一応htmlのファイルだとうまく行くのですが、cakephpだとうまくいきません。
皆様の知恵をお借りできれば幸いです。

###該当のソースコード

php

1 <div id="map" style="width: 330px; height: 100px;"> 2 </div> 3 <script> 4 var geocoder = new google.maps.Geocoder(); 5 geocoder.geocode({ 6 'address':'150-0032' 7 }, function(result, status) { 8 if (status == google.maps.GeocoderStatus.OK){ 9 var latlng = result[0].geometry.location; 10 var options = { 11 zoom: 15, 12 center: latlng, 13 mapTypeId:google.maps.MapTypeId.ROADMAP 14 }; 15 var map = new google.maps.Map(document.getElementById('map'), options); 16 }else{alert('error'); 17 } 18 }); 19 </script> 20 21----------------------------------------------- 22 23default.ctp 24<head> 25<?php echo $this->Html->script('http://maps.google.com/maps/api/js?sensor=true', false); ?> 26</head> 27 28

###追記
イメージ説明

このようなエラーがコンソールで見たら出ていました。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

popobot

2016/12/23 12:25

cakephpで出力されたHTMLとうまくいったHTMLを比較すれば、原因がわかると思うのですが、違う点などないでしょうか?
sueken2

2016/12/23 12:46

ご指摘ありがとうございます。成功したhtmlファイルの記述を完全にコピペしても表記されないのです。
sueken2

2016/12/23 12:49

僕の書き方ではctpファイルと何か相性が悪いと言ったことがあるのでしょうか?勉強不足な返信で申し訳ありません
guest

回答1

0

ベストアンサー

情報が少ないので予想ですが...default.ctp側にjsをfetchするコードがないのではないかと
以下の様にfetchを追記したらどうでしょうか。

php

1<head> 2<?php echo $this->Html->script('http://maps.google.com/maps/api/js?sensor=true', false); ?> 3<?= $this->fetch('script') ?> 4</head>

ちなみに、通常$this->Html->script('xxx.js')というコードは、個別のctpファイル側に記載して、default.ctp側でfetch('script')を実行することで設定したscriptが出力されます。

投稿2016/12/23 13:06

編集2016/12/23 13:10
popobot

総合スコア6586

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sueken2

2016/12/23 13:17

ご指摘ありがとうございます。 指摘していただいたところを直して見たのですが、まだどうも動きません。 お手数ですが解決のために必要な情報がございましたら、ご指摘いただけないでしょうか? どうぞよろしくお願いします。
popobot

2016/12/23 22:51 編集

そもそも引数のfalseをなくせばいいだけだったかもしれません。 <?php echo $this->Html->script('http://maps.google.com/maps/api/js?sensor=true'); ?> それでもうまくいかないなら、ブラウザでCakephpが出力したHTMLを掲載してください。 あとブラウザのデベロッパーツールでコンソールにエラー等出ていますか?
popobot

2016/12/23 22:51 編集

手元の環境ではCakeでもうまく動きました もしかしたらAPI側でリファラー等で制限していて、Cakephp側は動かないってことはないでしょうか
sueken2

2016/12/23 23:55

chromeのコンソールで上の追記にある画像のようなエラーが出てきました。
sueken2

2016/12/23 23:57

<div id="map" style="width: 330px; height: 100px;"> </div> <script> var geocoder = new google.maps.Geocoder(); geocoder.geocode({ 'address':'252-0206' }, function(result, status) { if (status == google.maps.GeocoderStatus.OK){ var latlng = result[0].geometry.location; var options = { zoom: 15, center: latlng, mapTypeId:google.maps.MapTypeId.ROADMAP }; var map = new google.maps.Map(document.getElementById('map'), options); }else{alert('error'); } }); </script> chromeでソースを表示させて見ました。
sueken2

2016/12/24 00:02

二個目のコメントのことなのですが、リファラーに関することは特にやってないのですが、デフォルトで設定がされているのでしょうか? 理解がたらず申し訳ありません。
popobot

2016/12/24 01:01

もしかして、単にGoogle Maps JavaScript APIのkeyを設定していないだけでは... 以下を参考にやってみてください。 https://nendeb.com/276 ※Google Maps Geocoding APIも有効にする必要があると思います。
sueken2

2016/12/24 01:39

参考のサイトの通りにやって見たら、表示することができました。本当にありがとうございます。ベストアンサーにさせていただきます。本当にありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問