Reputation: 887
Following code working:
function()
{
var Marker = new google.maps.Marker();
var MarkerOptions = {};
MarkerOptions.map = my_map;
MarkerOptions.position = new google.maps.LatLng(0,0);
MarkerOptions.animation = google.maps.Animation.DROP;
MarkerOptions.clickable = true;
MarkerOptions.cursor = 'pointer';
Marker.smallicon = [{
anchor:null,
origin:null,
scaledSize:null,
size:new google.maps.Size(20,32),
url:'http://maps.gstatic.com/mapfiles/markers2/marker_sprite.png'
}];
Marker.setOptions(MarkerOptions);
}
And after add this one line, console shooting full of errors
function()
{
var Marker = new google.maps.Marker();
var MarkerOptions = {};
MarkerOptions.map = way_map;
MarkerOptions.position = new google.maps.LatLng(0,0);
MarkerOptions.animation = google.maps.Animation.DROP;
MarkerOptions.clickable = true;
MarkerOptions.cursor = 'pointer';
Marker.smallicon = [{
anchor:null,
origin:null,
scaledSize:null,
size:new google.maps.Size(20,32),
url:'http://maps.gstatic.com/mapfiles/markers2/marker_sprite.png'
}];
Marker.setIcon(Marker.smallicon);
Marker.setOptions(MarkerOptions);
}
I don't understand it more, it working with google.maps.MarkerImage
but in reference is written
A structure representing a Marker icon or shadow image. This class is deprecated in favor of Icon.
So i try to work with Icon, they have changed it from constructor to Object so was changed the model of calling.
Upvotes: 1
Views: 6641
Reputation: 244
I Think This Is Fine For You
//adapted from http://gmaps-samples-v3.googlecode.com/svn/trunk/overlayview/custommarker.html
function CustomMarker(latlng, map, imageSrc) {
this.latlng_ = latlng;
this.imageSrc = imageSrc;
// Once the LatLng and text are set, add the overlay to the map. This will
// trigger a call to panes_changed which should in turn call draw.
this.setMap(map);
}
CustomMarker.prototype = new google.maps.OverlayView();
CustomMarker.prototype.draw = function () {
// Check if the div has been created.
var div = this.div_;
if (!div) {
// Create a overlay text DIV
div = this.div_ = document.createElement('div');
// Create the DIV representing our CustomMarker
div.className = "customMarker"
var img = document.createElement("img");
img.src = this.imageSrc;
div.appendChild(img);
google.maps.event.addDomListener(div, "click", function (event) {
google.maps.event.trigger(me, "click");
});
// Then add the overlay to the DOM
var panes = this.getPanes();
panes.overlayImage.appendChild(div);
}
// Position the overlay
var point = this.getProjection().fromLatLngToDivPixel(this.latlng_);
if (point) {
div.style.left = point.x + 'px';
div.style.top = point.y + 'px';
}
};
CustomMarker.prototype.remove = function () {
// Check if the overlay was on the map and needs to be removed.
if (this.div_) {
this.div_.parentNode.removeChild(this.div_);
this.div_ = null;
}
};
CustomMarker.prototype.getPosition = function () {
return this.latlng_;
};
var map = new google.maps.Map(document.getElementById("map"), {
zoom: 17,
center: new google.maps.LatLng(37.77088429547992, -122.4135623872337),
mapTypeId: google.maps.MapTypeId.ROADMAP
});
var data = [{
profileImage: "http://www.gravatar.com/avatar/d735414fa8687e8874783702f6c96fa6?s=90&d=identicon&r=PG",
pos: [37.77085, -122.41356],
}, {
profileImage: "http://placekitten.com/90/90",
pos: [37.77220, -122.41555],
}]
for(var i=0;i<data.length;i++){
new CustomMarker(new google.maps.LatLng(data[i].pos[0],data[i].pos[1]), map, data[i].profileImage)
}
.customMarker {
position:absolute;
cursor:pointer;
background:#424242;
width:48px;
height:48px;
/* -width/2 */
margin-left:-42px;
/* -height + arrow */
margin-top:-84px;
border-radius:24px;
padding:0px;
}
.customMarker:after {
content:"";
position: absolute;
bottom: -13px;
left: 10px;
border-width: 18px 14px 0;
border-style: solid;
border-color: #424242 transparent;
display: block;
width: 0;
}
.customMarker img {
width:36px;
height:36px;
margin:6px;
border-radius:20px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<script src="http://maps.google.com/maps/api/js?sensor=false"></script>
<div id="map" style="width: 640pxpx; height: 480px;">map div</div>
Upvotes: 0
Reputation: 117314
Marker.smallicon
currently is an array, not a google.maps.Icon
use either:
Marker.setIcon(Marker.smallicon[0]);
or let it be an object:
Marker.smallicon = {
size:new google.maps.Size(20,32),
url:'http://maps.gstatic.com/mapfiles/markers2/marker_sprite.png'
};
Note: you don't need to set all options of a google.maps.Icon
, ommit the options that you dont want to set.
Upvotes: 2
Reputation: 9407
Use:
icon: {url:'http://maps.gstatic.com/mapfiles/markers2/marker_sprite.png'}
instead of
url:'http://maps.gstatic.com/mapfiles/markers2/marker_sprite.png'
Upvotes: 1