observerable with Google Map Marker
https://groups.google.com/forum/#!topic/knockoutjs/TNUXl8JXWHQhttps://groups.google.com/forum/?pli=1#!topic/knockoutjs/0Tny1JWlq-c
by kougiland
HTML
<script src="http://knockoutjs.com/downloads/jquery.tmpl.min.js"></script>
<script src="http://knockoutjs.com/downloads/knockout-2.2.1.js"></script>
<script src="http://maps.google.com/maps/api/js?sensor=false&.js"></script>
<div id="map"></div>
<div id="points" data-bind="template: { name: 'pointsTmpl', foreach: points }"></div>
<script id="pointsTmpl" type="text/html">
<p>
Name: <span data-bind="text: name"></span>;
Lat: <span data-bind="text: lat"></span>;
Long: <span data-bind="text: long"></span>
</p>
</script>
CSS
#map {
width: 400px;
height: 400px;
}
JavaScript
function point(name, lat, long) {
this.name = name;
this.lat = ko.observable(lat);
this.long = ko.observable(long);
var image = {
url: 'https://dl.dropboxusercontent.com/u/814783/fiddle/marker.png',
origin: new google.maps.Point(0, 0),
anchor: new google.maps.Point(12, 59)
};
var marker = new google.maps.Marker({
position: new google.maps.LatLng(lat, long),
title: name,
map: map,
draggable: true,
icon: image
});
//if you need the poition while dragging
google.maps.event.addListener(marker, 'drag', function() {
var pos = marker.getPosition();
this.lat(pos.lat());
this.long(pos.lng());
}.bind(this));
//if you just need to update it when the user is done dragging
google.maps.event.addListener(marker, 'dragend', function() {
var pos = marker.getPosition();
this.lat(pos.lat());
this.long(pos.lng());
}.bind(this));
}
var style = [{
"stylers": [{
"visibility": "off"
}]
}, {
"featureType": "road",
"stylers": [{
"visibility": "on"
}, {
"color": "#ffffff"
}]
}, {
"featureType": "road.arterial",
"stylers": [{
"visibility": "on"
}, {
"color": "#fee379"
}]
}, {
"featureType": "road.highway",
"stylers": [{
"visibility": "on"
}, {
"color": "#fee379"
}]
}, {
"featureType": "landscape",
"stylers": [{
"visibility": "on"
}, {
"color": "#f3f4f4"
}]
}, {
"featureType": "water",
"stylers": [{
"visibility": "on"
}, {
"color": "#7fc8ed"
}]
}, {}, {
"featureType": "road",
"elementType": "labels",
"stylers": [{
"visibility": "off"
...