質問: '35.60472'; $lng ='140.12333'; $range ='5'; $start =1; $format='xml'; $url='http://webservice.recruit.co.jp/hotpepper/gourmet/v1/?key='.$key.'&count='.$count.'&lat='.$lat.'&lng='.$lng.'&range='.$range. '&start='.$start.'&format='.$format; $xml=simplexml_load_file($url); ・・・ ・・・ ・・・ Google Maps V3 ``` 結果はこの緯度経度が県庁の緯度経度のためか千葉県庁の周りの店舗しか表示されません。それも地図は県庁の位置を指したままで、店舗の位置情報を表示してくれません。 large_areaを入れてもlatとlngがパラメータにあると、latとlngの方を優先するみたいでlarge_areaの時よりも県全体の店舗情報が少なく表示されます。ある地点からの範囲内のお店の検索を行う場合の範囲を表すrangeを使っても、以前より検索する範囲が広くなりましたが県全体の店舗を網羅することができませんでした。 緯度・経度の測地系を指定できるdatumを入れても同じでした。 このサイトを調べると、ホットペーパーapiのパラメータにはlat lngが書いてありません。google map apiの方に緯度経度が書いてあります。 つまり、google map apiで緯度経度を設定しそれをホットペーパーapiのレスポンスフィールドに渡すみたいです。 ※参考のコード ``` ``` 真似て作成しましたが※idはgoogle map apiがmapのため、ホットペーパーapiの方もgmapにしました。 ``` id $r->id; ``` ただ、地図が表示されるだけでした笑 それにホットペーパーapiのlatとlngを削除すると地図自体が表示されなくなります。 どうやったら店舗の位置が表示できるのですか? わからなくなってしまいました。 まとめます。 ・latとlngをパラメータに設定すると、ヒットする情報が少なくなる。 ・rangeを設定すると、ヒットする件数が増えるが、large_areaと比べると断然少ない ・パラメータからlatとlngを消すと、地図自体が表示されない(店舗自体が緯度経度を持っているため、latとlngをパラメータから消した) ・そして、地図を表示できても、緯度経度に設定した周りの店舗しか表示されない 補足:レスポンスフィールドを調べると、緯度経度が書かれています。つまり、各店舗の緯度経度になります。しかし、これをどうgoogle map apiに渡せばいいのかわかりません。
回答: ``` var bounds = new google.maps.LatLngBounds(); for (var i = 0; i < shops.length; i++) { var marker = new google.maps.Marker({ position: { lat: parseFloat(shops[i].getAttribute('data-lat')) , lng: parseFloat(shops[i].getAttribute('data-lng')) }, map: map }); bounds.extend(marker.position); } map.fitBounds(bounds); ``` http://qiita.com/ShibuyaKosuke/items/452928e235d4b1d10475 参照しているサイトによると, この箇所かと思います。 店舗のlat, lngをpositionに入れて、markerを作成しています。 bounds.extend(), map.fitBounds()などは追加したmarkerを全て表示できるようにmapを調整しています。 ``` var marker = new google.maps.Marker({ position: {lat: = $lat ?>, lng: = $lng ?>}, map: mapObj }); ``` あなたのコードだと上記箇所で行っているとかと思います。 マップが表示されているのであれば、画面中央にMarkerが表示されているのではないですか? 同じ作業を店舗数ごとに行ってください。 わからなければ ``` var marker2 = new google.maps.Marker({ position: {lat: '35.60000', lng: '140.12000'}, map: mapObj }); ``` を追加してみると、markerが1つ増えるかと思います。