Monday, April 30, 2012

Re: Google Map interface question

This won't be exactly what you're after, but I have recently implemented something quite similar. The following (1.3 code) will allow the user to drag and drop a pin to change the lat/long of that pin on the fly.

View

The first thing you'll need is to do is add a couple of json properties when you're defining each of your markers in your view, for example:

var marker = new google.maps.Marker({
...
                callbackUrl: "http://www.yoursite.com/<controller>/<action>/<id>",
                draggable: true
});

Then you'll need to add an event listener to listen for the "dragend" event of the pin:

// Add a "dragend" event listener so that we can determine the lat/long of the drop point
google.maps.event.addListener(marker, "dragend", function() {

var position = marker.getPosition();
var _data = "latitude=" + position.lat() + "&longitude=" + position.lng();
$.ajax({
type: "POST",
url: marker.callbackUrl,
data: _data,
success: function(data) {
// Do some stuff to notify the user that the lat/long has been updated
}
});

});

Controller

In your callback action within your controller, you'll need something like this:

function <action>($id = null) {
$this->autoRender = false;

if ($this->RequestHandler->isAjax()) {

Configure::write('debug', 0);
$this->layout = 'ajax';

$data['<Model>']['id'] = $id;

// Build up the data based on the posted form values
foreach($this->params['form'] as $key => $value) {
$data['<Model>'][$key] = $value;
}
// Save the data
if (!$this-><Model>->save($data)) {
$this->log($data, 'error');
$this->log($this-><Model>->validationErrors, 'error');

$this->set('message', 'There was an error updating the location for <b>' . $<model>['<Model>']['name'] . '</b>');
$this->render('/elements/flash/error', 'ajax');
} else {
$this->set('message', 'The location for <b>' . $<model>['<Model>']['name'] . '</b> has been updated');
$this->render('/elements/flash/success', 'ajax');
}
}
}

Like I said, I know this isn't exactly what you're after, but hopefully it will be of some use to you.

On 30 Apr 2012, at 05:13, Michael Gaiser wrote:

So, I want to use Google maps on my project which makes use of a
Location model. In that model there is a longitude and latitude value.
Most of the tutorials I have looked at talk about how to place
markers on your map. What I want to do is use the map to allow people
to navigate to the location they are editing and set the longitude and
latitude based on the current center of the map giving an easy
interface for entering in such values. So it leads me to this
question: How do I get the long/lat values from the google map and
save those values to my database? Thanks.

--
Our newest site for the community: CakePHP Video Tutorials http://tv.cakephp.org
Check out the new CakePHP Questions site http://ask.cakephp.org and help others with their CakePHP related questions.


To unsubscribe from this group, send email to
cake-php+unsubscribe@googlegroups.com For more options, visit this group at http://groups.google.com/group/cake-php

0 Comments:

Post a Comment

Subscribe to Post Comments [Atom]

<< Home


Real Estate