2011-10-20 4 views
39

मैं कैसे एक गूगल मैप्स मार्कर रंग करने के लिए की this explanation उपयोग कर रहा हूँ नक्शे, और रंग अच्छी तरह से काम करता है। लेकिन मैं स्केल किए गए आकार तर्क को मार्कर के आकार को बदल नहीं सकता।बदलें मार्कर आकार एक <a href="http://code.google.com/apis/maps/documentation/javascript/reference.html#MarkerImage" rel="nofollow noreferrer">MarkerImage</a> का उपयोग कर आइकन की स्थापना करके वी 3

var pinColor = 'FFFF00'; 
    var pinIcon = new google.maps.MarkerImage(
     "http://chart.apis.google.com/chart?chst=d_map_pin_letter&chld=%E2%80%A2|" + pinColor, 
     new google.maps.Size(21, 34), 
     new google.maps.Point(0,0), 
     new google.maps.Point(10, 34), 
     new google.maps.Size(2, 4)); 
    marker.setIcon(pinIcon); 

मार्कर आकार बदलने के लिए स्केल किए गए आकार तर्क का सही उपयोग क्या है? उदाहरण के लिए, मैं मार्कर आकार को कैसे दोगुना कर सकता हूं?

उत्तर

76

इस उत्तर John Black's helpful answer पर expounds, इसलिए मैं अपने जवाब में अपने जवाब सामग्री के कुछ दोहराया जाएगा।

एक मार्कर आकार बदलने के लिए सबसे आसान तरीका है तर्क 2, 3, और 4 रिक्त छोड़ने और एक तरफ तर्क 5.

var pinIcon = new google.maps.MarkerImage(
    "http://chart.apis.google.com/chart?chst=d_map_pin_letter&chld=%E2%80%A2|FFFF00", 
    null, /* size is determined at runtime */ 
    null, /* origin is 0,0 */ 
    null, /* anchor is bottom center of the scaled image */ 
    new google.maps.Size(42, 68) 
); 

में आकार को मापने के लिए एक के रूप में किया जा रहा है, this answer एक ऐसी ही सवाल का दावा है परिभाषित करने कि दूसरे तर्क में मार्कर आकार 5 वें तर्क में स्केलिंग से बेहतर है। मुझे नहीं पता कि यह सच है या नहीं।

तर्क छोड़कर 2-4 अशक्त डिफ़ॉल्ट गूगल पिन छवि के लिए अच्छा काम करता है, लेकिन आप डिफ़ॉल्ट गूगल पिन छाया छवि के लिए स्पष्ट रूप से एक लंगर सेट करना होगा, या यह इस तरह दिखेगा:

what happens when you leave anchor null on an enlarged shadow

पिन छवि के नीचे मध्य जब आप नक्शे पर ग्राफिक देखने पिन की नोक के साथ collocated जा करने के लिए होता है। यह महत्वपूर्ण है, क्योंकि मार्कर की स्थिति संपत्ति (मानचित्र पर LatLng स्थिति) जब आप एंकर (4 वें तर्क) null छोड़ते हैं तो पिन की दृश्य युक्ति के साथ स्वचालित रूप से कॉल किया जाएगा। दूसरे शब्दों में, लंगर अशक्त छोड़ने टिप अंक जहां यह इंगित करने के लिए माना जाता है सुनिश्चित करता है।

हालांकि, छाया की नोक निचले केंद्र में स्थित नहीं है। तो आपको पिन छाया की नोक को ऑफसेट करने के लिए स्पष्ट रूप से 4 वें तर्क को सेट करने की आवश्यकता है ताकि छाया की नोक को पिन छवि की नोक के साथ स्थानांतरित किया जा सके।

प्रयोग करके मैंने पाया कि छाया की नोक इस तरह सेट की जानी चाहिए: x आकार का 1/3 है और y आकार का 100% है।

var pinShadow = new google.maps.MarkerImage(
    "http://chart.apis.google.com/chart?chst=d_map_pin_shadow", 
    null, 
    null, 
    /* Offset x axis 33% of overall size, Offset y axis 100% of overall size */ 
    new google.maps.Point(40, 110), 
    new google.maps.Size(120, 110)); 

इस देने के लिए:

offset the enlarged shadow anchor explicitly

+4

वहाँ 'google.maps.Size' में पक्षानुपात बनाए रखने के, या वास्तविक पिक्सल के बजाय प्रतिशत निर्दिष्ट करने के लिए कोई तरीका है? धन्यवाद! –

+0

वहाँ एक रास्ता फिर से पैमाने पर करने के डिफ़ॉल्ट मार्कर आइकन है? यही है, क्या मैं मार्कर पर 'setIcon' का उपयोग करने के लिए मार्कर _without_ के स्केलिंग को बदल सकता हूं? – ironchicken

21

आकार तर्क पिक्सल में कर रहे हैं। तो, अपने उदाहरण के मार्कर आकार दोगुना करने के लिए MarkerImage निर्माता पांचवें तर्क होगा:

new google.maps.Size(42,68) 

मैं बाहर अन्य तर्कों मानचित्र एपीआई आंकड़ा जाने के लिए यह सबसे आसान लगता है, जब तक कि मैं नीचे/केंद्र के अलावा कुछ की जरूरत है छवि के एंकर के रूप में। आपके मामले में आप कर सकता है:

var pinIcon = new google.maps.MarkerImage(
    "http://chart.apis.google.com/chart?chst=d_map_pin_letter&chld=%E2%80%A2|" + pinColor, 
    null, /* size is determined at runtime */ 
    null, /* origin is 0,0 */ 
    null, /* anchor is bottom center of the scaled image */ 
    new google.maps.Size(42, 68) 
); 
संबंधित मुद्दे

 संबंधित मुद्दे