androidgoogle-mapsreact-nativereact-native-maps

React Native Maps: Markers image doesn't show using Custom Marker in react-native-maps


I'm using react-native-maps but I faced a problem that after a lot of googling without answer makes me ask it here. I'm trying to use Custom Marker for the marker in the map as the following picture

enter image description here

when I use CustomMarker.js class solely it works fine and it shows the image but when I use it as the marker custom view it doesn't show the image

enter image description here

I don't know why it can't render the image with Custom Marker in android. and here is my code where I'm using map, markers and custom marker class

return (
  <View style={styles.map_container}>
    <MapView
      style={styles.map}
      customMapStyle={customrMapStyle}
      region={{
        latitude: this.state.region.latitude,
        longitude: this.state.region.longitude,
        latitudeDelta: 0.4,
        longitudeDelta: 0.41,
      }} >
      {
        coordinationData.map(function (marker, i) {

          let lat = marker.latLang.latitude;
          let lang = marker.latLang.longitude;
           <MapView.Marker
            key={i}
            coordinate={
              {
                latitude: lat,
                longitude: lang,
                latitudeDelta: 0.4,
                longitudeDelta: 0.41
              }
            }
            title={marker.title}
            description={marker.description}

          >
            <CustomMarker />
          </MapView.Marker>
        })}
    </MapView>
  </View>

any kind of help would be appreciated.


Solution

  • Use SVG for this https://github.com/react-native-community/react-native-svg

    <Marker
        coordinate={{
            longitude: lang,
            latitude: lat,
        }}
    >
        <View style={{
            flexDirection: 'row', width: 100, height: 30,
            backgroundColor: 'orange'
        }}>
            <Svg
                width={40} height={30}>
                <Image
                    href={url}
                    width={40}
                    height={30}
                />
            </Svg>
            <View
                style={{
                    flexDirection: 'column'
    
                }}
            >
                <Text
                    style={{
                        marginLeft: 2,
                        fontSize: 9,
                        color: '#ffffff',
                        fontWeight: 'bold',
                        textDecorationLine: 'underline'
                    }}
                >{marker.title}</Text>
                <Text
                    style={{
                        marginLeft: 2,
                        fontSize: 9,
                        color: '#ffffff',
                        fontWeight: 'bold',
                        textDecorationLine: 'underline'
                    }}
                >{marker.description}</Text>
            </View>
        </View>
    </Marker>