読者です 読者をやめる 読者になる 読者になる

TitaniumMobile勉強記

Web系エンジニア向けのキャリアアドバイザーやってましたが現在はフリーランスで開発含めて色々やってます。技術ネタとしてはRuby/RailsとJavaScript関連(Node.js、Titanium)あたり

ACS上のPlaceの緯度経度情報を更新する時の注意点

結論を先に書くと、緯度と経度両方の値をセットしてupdateしないとダメなようです。

例えば、Node.js+expressなWebアプリを作ってる場合に、

exports.edit = (req, res) ->
    latitude = req.query.latitude
    companyName = req.query.companyName
    place_id =  req.query.place_id

    ACS.Places.update
      place_id:place_id
      name: companyName
      latitude:latitude 
      session_id:req.session._session_id

    ,(e) ->
      if e.success
        console.log e
        res.send('success')
      else
        console.log e
        res.send('error')

というのはNGで、正しくは

exports.edit = (req, res) ->
    latitude = req.query.latitude
    longitude = req.query.longitude            
    companyName = req.query.companyName
    place_id =  req.query.place_id

    ACS.Places.update
      place_id:place_id
      name: companyName
      latitude:latitude 
      longitude: longitude
      session_id:req.session._session_id

    ,(e) ->
      if e.success
        console.log e
        res.send('success')
      else
        console.log e
        res.send('error')

としないとダメみたいです。

細かい経緯

社内向けに作ったスマフォアプリで利用する企業情報を修正出来る仕組みが必要になりました。

該当企業を検索して、緯度や経度情報を修正できるようにこんな感じのWebアプリを作ってます

f:id:h5y1m141:20140127063124j:plain

企業情報を登録する際に、一部のデータで、緯度だけとか、経度だけとかで誤りがあるようだったので、上記のような感じのUIにしました。

ステータスコードは200が返るけど値が更新されない

ひとまず、上記のようなUIを作った上で、緯度の情報だけが更新できるかどうか確認をしていたのですが

という状況なのに、実際には、該当企業の緯度情報が更新されませんでした

試しに、緯度と経度の値をセットしてみた

やりたいことは、「緯度だけ」とか「経度だけ」の情報更新だったのですが、念のため、更新されない方の経度情報も前述したコードのようにACS.Places.updateのパラメータに含めてみたら更新されました

公式ドキュメントにはそのような記載がなかったので、大分これでハマったので今後似たようなことをやりたい人がいた場合の参考になるかと思って簡単にまとめておきました